From 28af54ac8b300578c22c98e3612ee4a86cb0e5e9 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Sun, 11 May 2014 14:23:00 +0200 Subject: [PATCH] fixed bug for emerging colors when using resizeCanvas --- src/Intervention/Image/Gd/Commands/ResizeCanvasCommand.php | 6 ++++++ tests/ResizeCanvasCommandTest.php | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Intervention/Image/Gd/Commands/ResizeCanvasCommand.php b/src/Intervention/Image/Gd/Commands/ResizeCanvasCommand.php index 3c48bf85..31482df3 100644 --- a/src/Intervention/Image/Gd/Commands/ResizeCanvasCommand.php +++ b/src/Intervention/Image/Gd/Commands/ResizeCanvasCommand.php @@ -61,6 +61,12 @@ class ResizeCanvasCommand extends \Intervention\Image\Commands\AbstractCommand $src_h = $original_height; } + // make image area transparent to keep transparency + // even if background-color is set + $transparent = imagecolorallocatealpha($canvas->getCore(), 0, 0, 0, 127); + imagealphablending($canvas->getCore(), false); // do not blend / just overwrite + imagefilledrectangle($canvas->getCore(), $dst_x, $dst_y, $src_w + 1, $src_h + 1, $transparent); + // copy image into new canvas imagecopy($canvas->getCore(), $image->getCore(), $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h); diff --git a/tests/ResizeCanvasCommandTest.php b/tests/ResizeCanvasCommandTest.php index 8aabbdff..152fde1f 100644 --- a/tests/ResizeCanvasCommandTest.php +++ b/tests/ResizeCanvasCommandTest.php @@ -22,7 +22,7 @@ class ResizeCanvasCommandTest extends PHPUnit_Framework_TestCase $image_size->shouldReceive('align')->with('center')->andReturn($image_size); $image_size->shouldReceive('relativePosition')->andReturn($image_pos); $canvas = Mockery::mock('\Intervention\Image\Image'); - $canvas->shouldReceive('getCore')->times(2)->andReturn($resource); + $canvas->shouldReceive('getCore')->times(5)->andReturn($resource); $canvas->shouldReceive('getSize')->andReturn($canvas_size); $driver = Mockery::mock('\Intervention\Image\Gd\Driver'); $driver->shouldReceive('newImage')->with(820, 640, '#b53717')->once()->andReturn($canvas);