Example #1
0
 /**
  * Returns the the path to the processed image 
  * 
  * @param string $sFilter
  * @param string $sOptions
  * @param string $sFile
  * 
  * @return string
  * 
  * @throws \Exception
  */
 public function process($sFilter, $sOptions, $sFile)
 {
     $this->oLogger->addInfo("filter=" . $sFilter . "; file=" . $sFile);
     // check if filter exists
     $sFilterClass = "\\Pids\\Filter\\" . ucfirst(strtolower($sFilter));
     if (!class_exists($sFilterClass)) {
         throw new \Exception("Filter " . $sFilterClass . " does not exist.");
     }
     $oFilter = new $sFilterClass();
     // check if image exists else use default image
     if (!file_exists('data' . DIRECTORY_SEPARATOR . $sFile)) {
         $sFile = $this->aConfig["image"]["default"];
         $this->oLogger->addDebug("using default image");
     }
     $this->sSourceImage = 'data' . DIRECTORY_SEPARATOR . $sFile;
     // check if cache is up to date
     $this->sCacheImage = $this->getCachePath($sFilter, $sOptions, $sFile);
     if (file_exists($this->sCacheImage) && filemtime($this->sSourceImage) < filemtime($this->sCacheImage)) {
         $this->oLogger->addDebug("cache file was up to date");
         return $this->sCacheImage;
     }
     //TODO separate method
     $rFinfo = finfo_open(FILEINFO_MIME_TYPE);
     $sMime = finfo_file($rFinfo, $this->sSourceImage, FILEINFO_MIME_TYPE);
     switch ($sMime) {
         case 'image/jpeg':
         case 'image/jpg':
             $rImage = imagecreatefromjpeg($this->sSourceImage);
             break;
         case 'image/png':
             $rImage = imagecreatefrompng($this->sSourceImage);
             break;
         default:
             throw new \Exception('Unsupported mime type ' . $sMime);
     }
     // create cache file
     $rImage = $oFilter->apply($rImage, $sOptions, $this->aConfig["filters"][strtolower($sFilter)]);
     if ($this->aConfig["image"]["watermark"]) {
         $rImage = $oFilter->addWatermark($rImage);
     }
     //TODO separate method
     switch ($sMime) {
         case 'image/jpeg':
         case 'image/jpg':
             imagejpeg($rImage, $this->sCacheImage, $this->aConfig["image"]["quality"]);
             break;
         case 'image/png':
             imagepng($rImage, $this->sCacheImage, ceil($this->aConfig["image"]["quality"] / 10));
             break;
     }
     $this->oLogger->addDebug("cache file created:" . $this->sCacheImage);
     return $this->sCacheImage;
 }
Example #2
0
 /**
  * Execute
  *
  * @return Wrapper
  */
 public function execute()
 {
     $base = $this->generateCommand();
     foreach ($this->document as $name => $doc) {
         /* @var $doc Document */
         if ($doc->getPassword()) {
             $command = sprintf('%s --password=%s', $base, $doc->getPassword());
         } else {
             $command = $base;
         }
         $command = sprintf('%s %s', $command, escapeshellarg($doc->getPath()));
         if ($this->logger) {
             $this->logger->addInfo(sprintf('Tika command: "%s"', $command));
         }
         $process = new Process($command);
         $process->run();
         if (!$process->isSuccessful()) {
             throw new \InvalidArgumentException($process->getErrorOutput());
         }
         $content = $process->getIncrementalOutput();
         $doc->setRawContent($content);
         if ($this->config->getMetadataOnly()) {
             $this->loadMetadata($doc, $content);
         } else {
             if (in_array($this->config->getOutputFormat(), array('xml', 'html'))) {
                 $this->loadDocument($doc, $content);
             } else {
                 $doc->setContent($content);
             }
         }
     }
     return $this;
 }