Example #1
0
 public function checkStatus()
 {
     $va_status = parent::checkStatus();
     if ($this->register()) {
         $va_status['available'] = true;
     } else {
         if (caMediaPluginCoreImageInstalled($this->ops_CoreImage_path)) {
             $va_status['unused'] = true;
             $va_status['warnings'][] = _t("Didn't load because CoreImageTool is available and preferred");
         }
         if (caMediaPluginImagickInstalled()) {
             $va_status['unused'] = true;
             $va_status['warnings'][] = _t("Didn't load because Imagick/ImageMagick is available and preferred");
         }
         if (caMediaPluginImageMagickInstalled($this->ops_imagemagick_path)) {
             $va_status['unused'] = true;
             $va_status['warnings'][] = _t("Didn't load because ImageMagick (command-line) is available and preferred");
         }
         if (caMediaPluginGmagickInstalled()) {
             $va_status['unused'] = true;
             $va_status['warnings'][] = _t("Didn't load because Gmagick is available and preferred");
         }
         if (caMediaPluginGraphicsMagickInstalled($this->ops_graphicsmagick_path)) {
             $va_status['unused'] = true;
             $va_status['warnings'][] = _t("Didn't load because GraphicsMagick is available and preferred");
         }
         if (!caMediaPluginGDInstalled()) {
             $va_status['errors'][] = _t("Didn't load because your PHP install lacks GD support");
         }
     }
     return $va_status;
 }
Example #2
0
 public function joinArchiveContents($pa_files, $pa_options = array())
 {
     // the gmagick multi image feature seems broken -> try and use one of the other plugins to do this
     $vo_plugin = null;
     if (caMediaPluginGraphicsMagickInstalled($this->ops_graphicsmagick_path)) {
         $vo_plugin = new WLPlugMediaGraphicsMagick();
     } else {
         if (caMediaPluginImagickInstalled()) {
             $vo_plugin = new WLPlugMediaImagick();
         } else {
             if (caMediaPluginImageMagickInstalled($this->ops_imagemagick_path)) {
                 $vo_plugin = new WLPlugMediaImageMagick();
             }
         }
     }
     if (is_object($vo_plugin)) {
         $vo_plugin->register();
         return $vo_plugin->joinArchiveContents($pa_files, $pa_options);
     } else {
         return false;
     }
 }
Example #3
0
 public function divineFileFormat($ps_filepath)
 {
     if ($ps_filepath == '') {
         return '';
     }
     if (!$this->opo_config->get('dont_use_graphicsmagick_to_identify_pdfs') && caMediaPluginGraphicsMagickInstalled($this->ops_graphicsmagick_path)) {
         if (is_array($va_info = $this->_graphicsMagickIdentify($ps_filepath)) && sizeof($va_info)) {
             $vn_width = $va_info['width'];
             $vn_height = $va_info['height'];
             $vn_res = 72;
             $vn_pages = $va_info['pages'];
         } else {
             return null;
         }
     } else {
         if (!$this->opo_config->get('dont_use_imagemagick_to_identify_pdfs') && caMediaPluginImageMagickInstalled($this->ops_imagemagick_path)) {
             if (is_array($va_info = $this->_imageMagickIdentify($ps_filepath)) && sizeof($va_info)) {
                 $vn_width = $va_info['width'];
                 $vn_height = $va_info['height'];
                 $vn_res = 72;
                 $vn_pages = $va_info['pages'];
             } else {
                 return null;
             }
         } else {
             try {
                 include_once __CA_LIB_DIR__ . "/core/Zend/Pdf.php";
                 $o_pdf = Zend_Pdf::load($ps_filepath);
                 if (sizeof($o_pdf->pages) == 0) {
                     return '';
                 }
             } catch (Exception $e) {
                 return null;
             }
             $o_page = $o_pdf->pages[0];
             $vn_width = $o_page->getWidth();
             $vn_height = $o_page->getHeight();
             $vn_res = 72;
             $vn_pages = sizeof($o_pdf->pages);
         }
     }
     $vs_mimetype = "application/pdf";
     if ($vs_mimetype && $this->info["IMPORT"][$vs_mimetype]) {
         $this->handle = $this->ohandle = array("filepath" => $ps_filepath, "width" => $vn_width, "height" => $vn_height, "mimetype" => $vs_mimetype, "resolution" => $vn_res, "pages" => $vn_pages, "page" => 1, "quality" => 75, "filesize" => filesize($ps_filepath), "content" => '', "content_by_location" => array());
         $this->properties = array("width" => $this->handle["width"], "height" => $this->handle["height"], "mimetype" => $vs_mimetype, "quality" => 75, "pages" => $this->handle["pages"], "page" => 1, "resolution" => 72, "filesize" => $this->handle["filesize"], "typename" => "PDF");
         return $vs_mimetype;
     } else {
         return '';
     }
 }
Example #4
0
 private function _imageMagickRead($ps_filepath)
 {
     if (caMediaPluginImageMagickInstalled($this->ops_imagemagick_path)) {
         exec($this->ops_imagemagick_path . '/identify -format "%m;%w;%h\\n" "' . $ps_filepath . "\" 2> /dev/null", $va_output, $vn_return);
         $va_tmp = explode(';', $va_output[0]);
         if (sizeof($va_tmp) != 3) {
             return null;
         }
         return array('mimetype' => $this->magickToMimeType($va_tmp[0]), 'magick' => $va_tmp[0], 'width' => $va_tmp[1], 'height' => $va_tmp[2], 'ops' => array(), 'filepath' => $ps_filepath);
     }
     return null;
 }
Example #5
0
 private function _imageMagickWrite($pa_handle, $ps_filepath, $ps_mimetype, $pn_quality = null)
 {
     if (caMediaPluginImageMagickInstalled($this->ops_imagemagick_path)) {
         $va_ops = array();
         foreach ($pa_handle['ops'] as $va_op) {
             switch ($va_op['op']) {
                 case 'strip':
                     $va_ops['convert'][] = "-strip";
                     break;
                 case 'annotation':
                     $vs_op = '-gravity ' . $va_op['position'] . ' -fill ' . str_replace('#', '\\#', $va_op['color']) . ' -pointsize ' . $va_op['size'] . ' -draw "text ' . $va_op['inset'] . ',' . $va_op['inset'] . ' \'' . $va_op['text'] . '\'"';
                     if ($va_op['font']) {
                         $vs_op .= ' -font ' . $va_op['font'];
                     }
                     $va_ops['convert'][] = $vs_op;
                     break;
                 case 'watermark':
                     $vs_op = "-dissolve " . $va_op['opacity'] * 100 . " -gravity " . $va_op['position'] . " " . $va_op['watermark_image'];
                     //"  -geometry ".$va_op['watermark_width']."x".$va_op['watermark_height']; [Seems to be interpreted as scaling the image being composited on as of at least v6.5.9; so we don't scale watermarks in ImageMagick... we just use the native size]
                     $va_ops['composite'][] = $vs_op;
                     break;
                 case 'size':
                     if ($va_op['width'] < 1) {
                         break;
                     }
                     if ($va_op['height'] < 1) {
                         break;
                     }
                     $va_ops['convert'][] = '-resize ' . $va_op['width'] . 'x' . $va_op['height'] . ' -filter Cubic';
                     break;
                 case 'crop':
                     if ($va_op['width'] < 1) {
                         break;
                     }
                     if ($va_op['height'] < 1) {
                         break;
                     }
                     if ($va_op['x'] < 0) {
                         break;
                     }
                     if ($va_op['y'] < 0) {
                         break;
                     }
                     $va_ops['convert'][] = '-crop ' . $va_op['width'] . 'x' . $va_op['height'] . '+' . $va_op['x'] . '+' . $va_op['y'];
                     break;
                 case 'rotate':
                     if (!is_numeric($va_op['angle'])) {
                         break;
                     }
                     $va_ops['convert'][] = '-rotate ' . $va_op['angle'];
                     break;
                 case 'filter_despeckle':
                     $va_ops['convert'][] = '-despeckle';
                     break;
                 case 'filter_sharpen':
                     if ($va_op['radius'] < 0) {
                         break;
                     }
                     $vs_tmp = '-sharpen ' . $va_op['radius'];
                     if (isset($va_op['sigma'])) {
                         $vs_tmp .= 'x' . $va_op['sigma'];
                     }
                     $va_ops['convert'][] = $vs_tmp;
                     break;
                 case 'filter_median':
                     if ($va_op['radius'] < 0) {
                         break;
                     }
                     $va_ops['convert'][] = '-median ' . $va_op['radius'];
                     break;
                 case 'filter_unsharp_mask':
                     if ($va_op['radius'] < 0) {
                         break;
                     }
                     $vs_tmp = '-unsharp ' . $va_op['radius'];
                     if (isset($va_op['sigma'])) {
                         $vs_tmp .= 'x' . $va_op['sigma'];
                     }
                     if (isset($va_op['amount'])) {
                         $vs_tmp .= '+' . $va_op['amount'];
                     }
                     if (isset($va_op['threshold'])) {
                         $vs_tmp .= '+' . $va_op['threshold'];
                     }
                     $va_ops['convert'][] = $vs_tmp;
                     break;
             }
         }
         if (isset($this->properties["orientation_rotate"]) && $this->properties["orientation_rotate"] != 0) {
             $va_ops['convert'][] = '-rotate ' . $this->properties["orientation_rotate"];
         }
         if ($this->properties['gamma']) {
             if (!$this->properties['reference-black']) {
                 $this->properties['reference-black'] = 0;
             }
             if (!$this->properties['reference-white']) {
                 $this->properties['reference-white'] = 65535;
             }
             $va_ops['convert'][] = "-set gamma " . $this->properties['gamma'];
             $va_ops['convert'][] = "-set reference-black " . $this->properties['reference-black'];
             $va_ops['convert'][] = "-set reference-white " . $this->properties['reference-white'];
         }
         $vs_input_file = $pa_handle['filepath'];
         if (is_array($va_ops['convert']) && sizeof($va_ops['convert'])) {
             if (!is_null($pn_quality)) {
                 array_unshift($va_ops['convert'], '-quality ' . intval($pn_quality));
             }
             array_unshift($va_ops['convert'], '-colorspace RGB');
             exec($this->ops_imagemagick_path . '/convert ' . caEscapeShellArg($vs_input_file . '[0]') . ' ' . join(' ', $va_ops['convert']) . ' ' . caEscapeShellArg($ps_filepath) . (caIsPOSIX() ? " 2> /dev/null" : ""));
             $vs_input_file = $ps_filepath;
         }
         if (is_array($va_ops['composite']) && sizeof($va_ops['composite'])) {
             exec($this->ops_imagemagick_path . '/composite ' . join(' ', $va_ops['composite']) . ' ' . caEscapeShellArg($vs_input_file . '[0]') . ' ' . caEscapeShellArg($ps_filepath) . (caIsPOSIX() ? " 2> /dev/null" : ""));
         }
         return true;
     }
     return null;
 }