]> source.dussan.org Git - nextcloud-server.git/commitdiff
keep transparency when resizing or cropping png/gif
authorJörn Friedrich Dreyer <jfd@butonic.de>
Fri, 22 Feb 2013 11:42:40 +0000 (12:42 +0100)
committerJörn Friedrich Dreyer <jfd@butonic.de>
Fri, 22 Feb 2013 11:42:40 +0000 (12:42 +0100)
lib/image.php

index 7b0cbefd6570fa0c2dd7ff2f5a7fd3bf6dc45a48..dc1c6df85aee44e29e11931a5fa062bd0cfeae35 100644 (file)
@@ -702,6 +702,13 @@ class OC_Image {
                        return false;
                }
 
+               // preserve transparency
+               if($this->imagetype == IMAGETYPE_GIF or $this->imagetype == IMAGETYPE_PNG) {
+                       imagecolortransparent($process, imagecolorallocatealpha($process, 0, 0, 0, 127));
+                       imagealphablending($process, false);
+                       imagesavealpha($process, true);
+               }
+
                imagecopyresampled($process, $this->resource, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
                if ($process == false) {
                        OC_Log::write('core', __METHOD__.'(): Error resampling process image '.$width.'x'.$height, OC_Log::ERROR);
@@ -751,6 +758,14 @@ class OC_Image {
                        imagedestroy($process);
                        return false;
                }
+
+               // preserve transparency
+               if($this->imagetype == IMAGETYPE_GIF or $this->imagetype == IMAGETYPE_PNG) {
+                       imagecolortransparent($process, imagecolorallocatealpha($process, 0, 0, 0, 127));
+                       imagealphablending($process, false);
+                       imagesavealpha($process, true);
+               }
+               
                imagecopyresampled($process, $this->resource, 0, 0, $x, $y, $targetWidth, $targetHeight, $width, $height);
                if ($process == false) {
                        OC_Log::write('core',