1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-16 02:44:01 +02:00

fixed gif encoding looses transparency

This commit is contained in:
Oliver Vogel
2014-06-26 16:58:34 +02:00
parent fd4a76e59e
commit c77ddc29f5
3 changed files with 29 additions and 0 deletions

View File

@@ -120,6 +120,7 @@ class Decoder extends \Intervention\Image\AbstractDecoder
imagealphablending($canvas, false); imagealphablending($canvas, false);
$transparent = imagecolorallocatealpha($canvas, 255, 255, 255, 127); $transparent = imagecolorallocatealpha($canvas, 255, 255, 255, 127);
imagefilledrectangle($canvas, 0, 0, $width, $height, $transparent); imagefilledrectangle($canvas, 0, 0, $width, $height, $transparent);
imagecolortransparent($canvas, $transparent);
imagealphablending($canvas, true); imagealphablending($canvas, true);
// copy original // copy original

View File

@@ -1506,6 +1506,20 @@ class GdSystemTest extends PHPUnit_Framework_TestCase
$this->assertInternalType('resource', $cln->getCore()); $this->assertInternalType('resource', $cln->getCore());
} }
public function testGifConversionKeepsTransparency()
{
$save_as = 'tests/tmp/foo.gif';
// create gif image from transparent png
$img = $this->manager()->make('tests/images/star.png');
$img->save($save_as);
// new gif image should be transparent
$img = $this->manager()->make($save_as);
$this->assertTransparentPosition($img, 0, 0);
@unlink($save_as);
}
private function assertColorAtPosition($color, $img, $x, $y) private function assertColorAtPosition($color, $img, $x, $y)
{ {
$pick = $img->pickColor($x, $y, 'hex'); $pick = $img->pickColor($x, $y, 'hex');

View File

@@ -1487,6 +1487,20 @@ class ImagickSystemTest extends PHPUnit_Framework_TestCase
$this->assertInstanceOf('Imagick', $cln->getCore()); $this->assertInstanceOf('Imagick', $cln->getCore());
} }
public function testGifConversionKeepsTransparency()
{
$save_as = 'tests/tmp/foo.gif';
// create gif image from transparent png
$img = $this->manager()->make('tests/images/star.png');
$img->save($save_as);
// new gif image should be transparent
$img = $this->manager()->make($save_as);
$this->assertTransparentPosition($img, 0, 0);
@unlink($save_as);
}
private function assertColorAtPosition($color, $img, $x, $y) private function assertColorAtPosition($color, $img, $x, $y)
{ {
$pick = $img->pickColor($x, $y, 'hex'); $pick = $img->pickColor($x, $y, 'hex');