/** * Optimize the given uploaded image. * * @param \Fab\Media\FileUpload\UploadedFileInterface $uploadedFile * @return \Fab\Media\FileUpload\UploadedFileInterface */ public function optimize($uploadedFile) { $imageInfo = getimagesize($uploadedFile->getFileWithAbsolutePath()); $currentWidth = $imageInfo[0]; $currentHeight = $imageInfo[1]; // resize an image if this one is bigger than telling by the settings. if (is_object($this->storage)) { $storageRecord = $this->storage->getStorageRecord(); } else { // Will only work in the BE for now. $storage = $this->getMediaModule()->getCurrentStorage(); $storageRecord = $storage->getStorageRecord(); } if (strlen($storageRecord['maximum_dimension_original_image']) > 0) { /** @var \Fab\Media\Dimension $imageDimension */ $imageDimension = GeneralUtility::makeInstance('Fab\\Media\\Dimension', $storageRecord['maximum_dimension_original_image']); if ($currentWidth > $imageDimension->getWidth() || $currentHeight > $imageDimension->getHeight()) { // resize taking the width as reference $this->resize($uploadedFile->getFileWithAbsolutePath(), $imageDimension->getWidth(), $imageDimension->getHeight()); } } return $uploadedFile; }
/** * Optimize the given uploaded image * * @param \Fab\Media\FileUpload\UploadedFileInterface $uploadedFile * @return \Fab\Media\FileUpload\UploadedFileInterface */ public function optimize($uploadedFile) { $orientation = $this->getOrientation($uploadedFile->getFileWithAbsolutePath()); $isRotated = $this->isRotated($orientation); // Only rotate image if necessary! if ($isRotated > 0) { $transformation = $this->getTransformation($orientation); $imParams = '###SkipStripProfile###'; if ($transformation !== '') { $imParams .= ' ' . $transformation; } $tempFileInfo = $this->gifCreator->imageMagickConvert($uploadedFile->getFileWithAbsolutePath(), '', '', '', $imParams, '', array(), TRUE); if ($tempFileInfo) { // Replace original file @unlink($uploadedFile->getFileWithAbsolutePath()); @rename($tempFileInfo[3], $uploadedFile->getFileWithAbsolutePath()); if ($GLOBALS['TYPO3_CONF_VARS']['GFX']['im_version_5'] === 'gm') { $this->resetOrientation($uploadedFile->getFileWithAbsolutePath()); } } } return $uploadedFile; }
/** * Return the target folder for the uploaded file. * * @param UploadedFileInterface $uploadedFile * @param ResourceStorage $storage * @return \TYPO3\CMS\Core\Resource\Folder */ public function getTargetFolderForUploadedFile(UploadedFileInterface $uploadedFile, ResourceStorage $storage) { // default is the root level $folder = $storage->getRootLevelFolder(); // get the root folder by default // Get a possible mount point coming from the storage record. $storageRecord = $storage->getStorageRecord(); $mountPointIdentifier = $storageRecord['mount_point_file_type_' . $uploadedFile->getType()]; if ($mountPointIdentifier > 0) { // We don't have a Mount Point repository in FAL, so query the database directly. $record = $this->getDatabaseConnection()->exec_SELECTgetSingleRow('path', 'sys_filemounts', 'deleted = 0 AND uid = ' . $mountPointIdentifier); if (!empty($record['path'])) { $folder = $storage->getFolder($record['path']); } } return $folder; }
/** * Return a file name given an uploaded file * * @param UploadedFileInterface $uploadedFile * @return string */ public function getFileName(UploadedFileInterface $uploadedFile) { $pathInfo = pathinfo($uploadedFile->getOriginalName()); $fileName = $this->sanitizeFileName($pathInfo['filename']); $fileNameWithExtension = $fileName; if (!empty($pathInfo['extension'])) { $fileNameWithExtension = sprintf('%s.%s', $fileName, $pathInfo['extension']); } return $fileNameWithExtension; }