]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
ImageMagick plugin can now make thumbnails of SVG files
authorMikael Nordfeldth <mmn@hethane.se>
Wed, 4 Mar 2015 12:50:20 +0000 (13:50 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Wed, 4 Mar 2015 12:50:20 +0000 (13:50 +0100)
plugins/ImageMagick/ImageMagickPlugin.php

index d6d4f1a1b8f0fae1ee81105b04e4a138624e1a0c..e68517adb4078b301b24db73492581702afa6aa3 100644 (file)
@@ -46,6 +46,8 @@ if (!defined('GNUSOCIAL')) { exit(1); }
 
 class ImageMagickPlugin extends Plugin
 {
+    public $preview_imageformat = 'PNG';    // Image format strings: http://www.imagemagick.org/script/formats.php#supported
+
     /**
      * @param ImageFile $file An ImageFile object we're getting metadata for
      * @param array $info The response from getimagesize()
@@ -95,6 +97,33 @@ class ImageMagickPlugin extends Plugin
         return !$success;
     }
 
+    public function onCreateFileImageThumbnailSource(File $file, &$imgPath, $media=null)
+    {
+        switch ($file->mimetype) {
+        case 'image/svg+xml':
+            // Let's save our frame to a temporary file. If we fail, remove it.
+            $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;
+        }
+        return true;
+    }
+
+    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(&$versions)
     {
         $versions[] = array('name' => 'ImageMagick',