From 228e7c423ef3f933883584502e9d4c6e5bd56877 Mon Sep 17 00:00:00 2001 From: tenma Date: Thu, 13 Aug 2020 18:31:43 +0100 Subject: [PATCH] [ImageMagick] Remove unnecessary code ImageMagickPlugin: - Remove animated thumbnail setting, we'll be able to use FFmpeg for performance - Remove onFillImageFileMetadata and onCreateFileImageThumbnailSource(), these are handled just fine by ImageFile - Bump minor version number README: - Update --- plugins/ImageMagick/ImageMagickPlugin.php | 73 +---------------------- plugins/ImageMagick/README | 14 ++--- 2 files changed, 8 insertions(+), 79 deletions(-) diff --git a/plugins/ImageMagick/ImageMagickPlugin.php b/plugins/ImageMagick/ImageMagickPlugin.php index 8e87dad01b..72d713950e 100644 --- a/plugins/ImageMagick/ImageMagickPlugin.php +++ b/plugins/ImageMagick/ImageMagickPlugin.php @@ -29,48 +29,16 @@ if (!defined('GNUSOCIAL')) { exit(1); } -/* - * Dependencies: - * php5-imagick - * - * Provides: - * Animated GIF resize support - * - * Comments: - * Animated GIF resize requires setting $config['thumbnail']['animated'] = true; - * - * Bugs: - * Not even ImageMagick is very good at resizing animated GIFs. - * We are not infinitely fast, so resizing animated GIFs is _not_ recommended. - */ - class ImageMagickPlugin extends Plugin { - const PLUGIN_VERSION = '2.0.0'; - - 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() - */ - public function onFillImageFileMetadata(ImageFile $imagefile) { - if (is_null($imagefile->animated) && $imagefile->mimetype === 'image/gif') { - $magick = new Imagick($imagefile->filepath); - $magick = $magick->coalesceImages(); - $imagefile->animated = $magick->getNumberImages()>1; - } - - return true; - } + const PLUGIN_VERSION = '2.1.0'; public function onStartResizeImageFile(ImageFile $imagefile, $outpath, array $box) { switch ($imagefile->mimetype) { case 'image/gif': - // If GIF, then only for animated gifs! (and only if we really want to resize the animation!) - if ($imagefile->animated && common_config('thumbnail', 'animated')) { + // If GIF, then only for animated gifs + if ($imagefile->animated) { return $this->resizeImageFileAnimatedGif($imagefile, $outpath, $box); } break; @@ -91,7 +59,6 @@ class ImageMagickPlugin extends Plugin $magick = $magick->deconstructImages(); // $magick->writeImages($outpath, true); did not work, had to use filehandle - // There's been bugs for writeImages in php5-imagick before, probably now too $fh = fopen($outpath, 'w+'); $success = $magick->writeImagesFile($fh); fclose($fh); @@ -100,40 +67,6 @@ class ImageMagickPlugin extends Plugin return !$success; } - 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): bool { $versions[] = array('name' => 'ImageMagick', diff --git a/plugins/ImageMagick/README b/plugins/ImageMagick/README index 8994ec3583..b25d9390eb 100644 --- a/plugins/ImageMagick/README +++ b/plugins/ImageMagick/README @@ -1,21 +1,17 @@ The ImageMagick plugin handles more kinds of image formats for thumbnails, thanks to ImageMagick. -Note: This plugin depends on php5-imagick +Note: This plugin depends on php-imagick Installation ============ add "addPlugin('ImageMagick');" to the bottom of your config.php -Settings +Notes ======== -animated: Whether to resize animated GIFs. -Note: We are not infinitely fast, so resizing animated GIFs is _not_ recommended. - -Example -======= -$config['thumbnail']['animated'] = true; -addPlugin('ImageMagick'); +- This plugin depends on php-imagick. +- Imagick is not very good at resizing animated GIFs. + Consider using the FFmpeg plugin for a faster alternative.