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; }
private function _CoreImageRead($ps_filepath) { if (caMediaPluginCoreImageInstalled($this->ops_CoreImage_path)) { $vs_output = shell_exec('sips --getProperty format --getProperty space --getProperty bitsPerSample --getProperty pixelWidth --getProperty pixelHeight --getProperty dpiWidth --getProperty dpiHeight "' . $ps_filepath . "\" 2> /dev/null"); $va_tmp = explode("\n", $vs_output); array_shift($va_tmp); $va_properties = array(); foreach ($va_tmp as $vs_line) { $va_line_tmp = explode(':', $vs_line); $va_properties[trim($va_line_tmp[0])] = trim($va_line_tmp[1]); } return array('mimetype' => $this->appleTypeToMimeType($va_properties['format']), 'magick' => $va_properties['format'], 'width' => $va_properties['pixelWidth'], 'height' => $va_properties['pixelHeight'], 'ops' => array(), 'filepath' => $ps_filepath); } return null; }
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 (caMediaPluginGmagickInstalled()) { $va_status['unused'] = true; $va_status['warnings'][] = _t("Didn't load because Gmagick is available and preferred"); } if (!caMediaPluginImagickInstalled()) { $va_status['errors'][] = _t("Didn't load because Imagick is not available"); } } if (!caMediaPluginDcrawInstalled($this->ops_dcraw_path)) { $va_status['warnings'][] = _t("RAW image support is not enabled because DCRAW cannot be found"); } return $va_status; }
private function _CoreImageWrite($pa_handle, $ps_filepath, $ps_mimetype, $pn_quality = null) { if (caMediaPluginCoreImageInstalled($this->ops_CoreImage_path)) { $va_ops = array(); foreach ($pa_handle['ops'] as $va_op) { switch ($va_op['op']) { case 'annotation': // TODO: annotation is not currrently supported in this plugin //$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': // TODO: watermark position is not currently handled in this plugin if (is_array($va_ops) && sizeof($va_ops)) { array_unshift($va_ops, "load watermark " . caEscapeShellArg($va_op['watermark_image'])); } $va_ops[] = "filter watermark CIStretchCrop size=" . $va_op['watermark_width'] . "," . $va_op['watermark_height'] . ":cropAmount=0:centerStretchAmount=0"; $va_ops[] = "filter watermark CIColorMatrix RVector=1,0,0,0:GVector=0,1,0,0:BVector=0,0,1,0:AVector=0,0,0," . $va_op['opacity'] . ":BiasVector=0,0,0,0"; $va_ops[] = "filter image CISoftLightBlendMode backgroundImage=watermark"; break; case 'size': if ($va_op['width'] < 1) { break; } if ($va_op['height'] < 1) { break; } $vn_scale = $va_op['width'] / $this->handle['width']; $va_ops[] = "filter image CILanczosScaleTransform scale={$vn_scale}:aspectRatio=1"; 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[] = "filter image CICrop rectangle=" . join(",", array($va_op['x'], $va_op['y'], $va_op['width'], $va_op['height'])); break; case 'rotate': if (!is_numeric($va_op['angle'])) { break; } $va_ops[] = "filter image CIAffineTransform transform=" . cos($va_op['angle']) . "," . -1 * sin($va_op['angle']) . ",0," . sin($va_op['angle']) . "," . cos($va_op['angle']) . ",0"; break; case 'filter_despeckle': // TODO: see if this works nicely... just using default values $va_ops[] = "filter image CINoiseReduction inputNoiseLevel=0.2:inputSharpness=0.4"; break; case 'filter_median': if ($va_op['radius'] < 0) { break; } // NOTE: CoreImage Median doesn't take a radius, unlike ImageMagick's $va_ops[] = "filter image CIMedianFilter "; break; case 'filter_unsharp_mask': case 'filter_sharpen': if ($va_op['radius'] < 0) { break; } $vn_radius = $va_op['radius']; if (!($vn_intensity = $va_op['amount'])) { $vn_intensity = 1; } $va_ops[] = "filter image CIUnsharpMask radius={$vn_radius}:intensity={$vn_intensity}"; break; } } if (isset($this->properties["orientation_rotate"]) && $this->properties["orientation_rotate"] != 0) { $va_ops[] = "filter image CIAffineTransform transform=" . cos($va_op['angle']) . "," . -1 * sin($this->properties["orientation_rotate"]) . ",0," . sin($this->properties["orientation_rotate"]) . "," . cos($this->properties["orientation_rotate"]) . ",0"; } $vs_input_file = $pa_handle['filepath']; if (is_array($va_ops) && sizeof($va_ops)) { array_unshift($va_ops, "load image " . caEscapeShellArg($vs_input_file)); array_push($va_ops, "store image " . caEscapeShellArg($ps_filepath) . " " . $this->apple_UTIs[$ps_mimetype]); //print "<hr>".join(" ", $va_ops)."<hr>"; exec($this->ops_CoreImage_path . " " . join(" ", $va_ops)); $vs_input_file = $ps_filepath; } return true; } return null; }
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 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['errors'][] = _t("Didn't load because GraphicsMagick executables cannot be found"); } } return $va_status; }