Preserve transparency when loading from a file

Fix #7148 - again :)
remotes/origin/fix-10825
kondou 12 years ago
parent 45b02f8f47
commit 18ef7bf1ed
  1. 6
      lib/private/image.php
  2. 3
      tests/lib/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,

@ -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();

Loading…
Cancel
Save