]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix svg and cache transparency issue
authorGeorg Ehrke <developer@georgehrke.com>
Thu, 15 Aug 2013 11:21:35 +0000 (13:21 +0200)
committerGeorg Ehrke <developer@georgehrke.com>
Thu, 15 Aug 2013 11:22:05 +0000 (13:22 +0200)
lib/image.php
lib/preview.php
lib/preview/svg.php

index 4bc38e20e56898f751d9463e13072653dd9aa767..53ffb24d18c60a515364ff26026164605a26715b 100644 (file)
@@ -496,6 +496,9 @@ class OC_Image {
                        return false;
                }
                $this->resource = @imagecreatefromstring($str);
+               imagealphablending($this->resource, false);
+               imagesavealpha($this->resource, true);
+
                if(!$this->resource) {
                        OC_Log::write('core', 'OC_Image->loadFromData, couldn\'t load', OC_Log::DEBUG);
                        return false;
index 293accb188acc31cd270176284ffc55872b6ca92..e7dd327d02164accbece2cbf6633b72f7bc1cab9 100755 (executable)
@@ -391,6 +391,8 @@ class Preview {
                                        continue;
                                }
 
+                               \OC_Log::write('core', 'Generating preview for "' . $file . '" with "' . get_class($provider) . '"', \OC_Log::DEBUG);
+
                                $preview = $provider->getThumbnail($file, $maxX, $maxY, $scalingUp, $this->fileview);
 
                                if(!($preview instanceof \OC_Image)) {
index e939e526b1b0e31bd13eed01d87e2d4bab409f04..b49e51720fa140f304d7ddd71c38e371de2cc30c 100644 (file)
@@ -18,7 +18,7 @@ if (extension_loaded('imagick')) {
                public function getThumbnail($path,$maxX,$maxY,$scalingup,$fileview) {
                        try{
                                $svg = new \Imagick();
-                               $svg->setResolution($maxX, $maxY);
+                               $svg->setBackgroundColor(new \ImagickPixel('transparent'));
 
                                $content = stream_get_contents($fileview->fopen($path, 'r'));
                                if(substr($content, 0, 5) !== '<?xml') {
@@ -26,14 +26,16 @@ if (extension_loaded('imagick')) {
                                }
 
                                $svg->readImageBlob($content);
-                               $svg->setImageFormat('jpg');
+                               $svg->setImageFormat('png32');
                        } catch (\Exception $e) {
                                \OC_Log::write('core', $e->getmessage(), \OC_Log::ERROR);
                                return false;
                        }
 
+
                        //new image object
-                       $image = new \OC_Image($svg);
+                       $image = new \OC_Image();
+                       $image->loadFromData($svg);
                        //check if image object is valid
                        return $image->valid() ? $image : false;
                }