X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FImageMagick%2FImageMagickPlugin.php;h=927445211cee75057d69d222c84ebb845e87bcbd;hb=d4482757134f33b36de3003421853246ec04ed91;hp=d6d4f1a1b8f0fae1ee81105b04e4a138624e1a0c;hpb=dcfb813066d288f69a9c10b0a216a423c50bff8e;p=quix0rs-gnu-social.git diff --git a/plugins/ImageMagick/ImageMagickPlugin.php b/plugins/ImageMagick/ImageMagickPlugin.php index d6d4f1a1b8..927445211c 100644 --- a/plugins/ImageMagick/ImageMagickPlugin.php +++ b/plugins/ImageMagick/ImageMagickPlugin.php @@ -46,6 +46,9 @@ if (!defined('GNUSOCIAL')) { exit(1); } class ImageMagickPlugin extends Plugin { + public $preview_imageformat = 'PNG'; // Image format strings: http://www.imagemagick.org/script/formats.php#supported + public $rasterize_vectors = false; // Whether we want to turn SVG into PNG etc. + /** * @param ImageFile $file An ImageFile object we're getting metadata for * @param array $info The response from getimagesize() @@ -95,7 +98,41 @@ class ImageMagickPlugin extends Plugin return !$success; } - public function onPluginVersion(&$versions) + public function onCreateFileImageThumbnailSource(File $file, &$imgPath, $media=null) + { + switch ($file->mimetype) { + case 'image/svg+xml': + if (!$this->rasterize_vectors) { + // ImageMagick seems to be hard to trick into scaling vector graphics... + return true; + } + break; + default: + // If we don't know the format, let's try not to mess with anything. + return true; + } + + $imgPath = tempnam(sys_get_temp_dir(), 'socialthumb-'); + if (!$this->createImagePreview($file, $imgPath)) { + common_debug('Could not create ImageMagick preview of File id=='.$file->id); + @unlink($imgPath); + $imgPath = null; + return true; + } + return false; + } + + protected function createImagePreview(File $file, $outpath) + { + $magick = new Imagick($file->getPath()); + $magick->setImageFormat($this->preview_imageformat); + $magick->writeImage($outpath); + $magick->destroy(); + + return getimagesize($outpath); // Verify that we wrote an understandable image. + } + + public function onPluginVersion(array &$versions) { $versions[] = array('name' => 'ImageMagick', 'version' => GNUSOCIAL_VERSION,