From 18ef7bf1edbb2046e473765cbc25eae3299590e9 Mon Sep 17 00:00:00 2001 From: kondou Date: Tue, 12 Aug 2014 11:00:00 +0200 Subject: [PATCH] Preserve transparency when loading from a file Fix #7148 - again :) --- lib/private/image.php | 6 ++++++ tests/lib/image.php | 3 +++ 2 files changed, 9 insertions(+) diff --git a/lib/private/image.php b/lib/private/image.php index 7ddc8dca14..bab91745c0 100644 --- a/lib/private/image.php +++ b/lib/private/image.php @@ -450,6 +450,9 @@ class OC_Image { case IMAGETYPE_GIF: if (imagetypes() & IMG_GIF) { $this->resource = imagecreatefromgif($imagePath); + // Preserve transparency + imagealphablending($this->resource, true); + imagesavealpha($this->resource, true); } else { OC_Log::write('core', 'OC_Image->loadFromFile, GIF images not supported: '.$imagePath, @@ -468,6 +471,9 @@ class OC_Image { case IMAGETYPE_PNG: if (imagetypes() & IMG_PNG) { $this->resource = imagecreatefrompng($imagePath); + // Preserve transparency + imagealphablending($this->resource, true); + imagesavealpha($this->resource, true); } else { OC_Log::write('core', 'OC_Image->loadFromFile, PNG images not supported: '.$imagePath, diff --git a/tests/lib/image.php b/tests/lib/image.php index 131a9d86f3..795bc46415 100644 --- a/tests/lib/image.php +++ b/tests/lib/image.php @@ -115,6 +115,9 @@ class Test_Image extends PHPUnit_Framework_TestCase { public function testData() { $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png'); $raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.png')); + // Preserve transparency + imagealphablending($raw, true); + imagesavealpha($raw, true); ob_start(); imagepng($raw); $expected = ob_get_clean();