/** * @param FileProcessingService $fileProcessingService * @param DriverInterface $driver * @param ProcessedFile $processedFile * @param File $file * @param $taskType * @param array $configuration */ public function optimizeImage(FileProcessingService $fileProcessingService, DriverInterface $driver, ProcessedFile $processedFile, File $file, $taskType, array $configuration = []) { if ($processedFile->getType() !== AbstractFile::FILETYPE_IMAGE) { return; } $optimizedProcessedFile = $this->processedFileRepository->findOneByOriginalFileAndTaskTypeAndConfiguration($file, $this->getTaskTypeForExtension($processedFile->getExtension()), $configuration); if (!$optimizedProcessedFile->isProcessed()) { $this->process($optimizedProcessedFile, $processedFile); } // This is a hack because we can not return the optimized file if ($optimizedProcessedFile->isProcessed() && $optimizedProcessedFile->getIdentifier() !== '') { ObjectAccess::setProperty($processedFile, 'name', $optimizedProcessedFile->getName(), TRUE); ObjectAccess::setProperty($processedFile, 'identifier', $optimizedProcessedFile->getIdentifier(), TRUE); $properties = $processedFile->getProperties(); $properties['width'] = $optimizedProcessedFile->getProperty('width'); $properties['height'] = $optimizedProcessedFile->getProperty('height'); ObjectAccess::setProperty($processedFile, 'properties', $properties, TRUE); } }