Example #1
0
 /**
  * @static
  * @param Asset_Image|Asset_Video|string
  * @param Asset_Image_Thumbnail_Config $config
  * @param string $path
  * @return string
  */
 public static function process($asset, Asset_Image_Thumbnail_Config $config, $fileSystemPath = null)
 {
     $format = strtolower($config->getFormat());
     if (!$fileSystemPath) {
         $fileSystemPath = $asset->getFileSystemPath();
     }
     // simple detection for source type if SOURCE is selected
     if ($format == "source") {
         $typeMapping = array("gif" => "gif", "jpeg" => "jpeg", "jpg" => "jpeg", "png" => "png");
         $fileExt = Pimcore_File::getFileExtension($asset->getFilename());
         if ($typeMapping[$fileExt]) {
             $format = $typeMapping[$fileExt];
         } else {
             // use PNG if source doesn't have a valid mapping
             $format = "png";
         }
     }
     $filename = "thumb_" . $asset->getId() . "__" . $config->getName() . "." . $format;
     $fsPath = PIMCORE_TEMPORARY_DIRECTORY . "/" . $filename;
     $path = str_replace(PIMCORE_DOCUMENT_ROOT, "", $fsPath);
     // check for existing and still valid thumbnail
     if (is_file($fsPath) and filemtime($fsPath) > $asset->getModificationDate()) {
         return $path;
     }
     // transform image
     $image = Asset_Image::getImageTransformInstance();
     if (!$image->load($fileSystemPath)) {
         return "/pimcore/static/img/image-not-supported.png";
     }
     $transformations = $config->getItems();
     if (is_array($transformations) && count($transformations) > 0) {
         foreach ($transformations as $transformation) {
             if (!empty($transformation)) {
                 $arguments = array();
                 $mapping = self::$argumentMapping[$transformation["method"]];
                 if (is_array($transformation["arguments"])) {
                     foreach ($transformation["arguments"] as $key => $value) {
                         $position = array_search($key, $mapping);
                         if ($position !== false) {
                             $arguments[$position] = $value;
                         }
                     }
                 }
                 ksort($arguments);
                 if (count($mapping) == count($arguments)) {
                     call_user_func_array(array($image, $transformation["method"]), $arguments);
                 } else {
                     $message = "Image Transform failed: cannot call method `" . $transformation["method"] . "´ with arguments `" . implode(",", $arguments) . "´ because there are too few arguments";
                     Logger::error($message);
                 }
             }
         }
     }
     $image->save($fsPath, $format, $config->getQuality());
     return $path;
 }
Example #2
0
 private function deleteThumbnailTmpFiles(Asset_Image_Thumbnail_Config $thumbnail)
 {
     // delete all thumbnails which are using this config
     $files = scandir(PIMCORE_TEMPORARY_DIRECTORY);
     foreach ($files as $file) {
         if (preg_match("/^thumb_(.*)__" . $thumbnail->getName() . "/", $file)) {
             unlink(PIMCORE_TEMPORARY_DIRECTORY . "/" . $file);
         }
     }
 }
 public function thumbnailAddAction()
 {
     $alreadyExist = false;
     try {
         Asset_Image_Thumbnail_Config::getByName($this->_getParam("name"));
         $alreadyExist = true;
     } catch (Exception $e) {
         $alreadyExist = false;
     }
     if (!$alreadyExist) {
         $pipe = new Asset_Image_Thumbnail_Config();
         $pipe->setName($this->_getParam("name"));
         $pipe->save();
     }
     $this->_helper->json(array("success" => !$alreadyExist, "id" => $pipe->getName()));
 }