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; }
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; } }
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 ''; } }
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; }
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; }