diff --git a/src/Drivers/Imagick/Modifiers/ResizeCanvasModifier.php b/src/Drivers/Imagick/Modifiers/ResizeCanvasModifier.php index c5bae4e8..be780dd9 100644 --- a/src/Drivers/Imagick/Modifiers/ResizeCanvasModifier.php +++ b/src/Drivers/Imagick/Modifiers/ResizeCanvasModifier.php @@ -33,23 +33,25 @@ class ResizeCanvasModifier extends GenericResizeCanvasModifier implements Specia $draw = new ImagickDraw(); $draw->setFillColor($background); - $delta = abs($resize->pivot()->x()); + $delta_width = abs($resize->pivot()->x()); + $delta_height = abs($resize->pivot()->y()); - if ($delta > 0) { + if ($delta_width > 0) { $draw->rectangle( 0, - 0, - $delta - 1, - $resize->height() + $delta_height, + $delta_width - 1, + $delta_height + $size->height() - 1 ); } $draw->rectangle( - $size->width() + $delta, - 0, + $size->width() + $delta_width, + $delta_height, $resize->width(), - $resize->height() + $delta_height + $size->height() - 1 ); + $frame->native()->drawImage($draw); } diff --git a/tests/Unit/Drivers/Imagick/Modifiers/ResizeCanvasModifierTest.php b/tests/Unit/Drivers/Imagick/Modifiers/ResizeCanvasModifierTest.php index 3f57b0b6..a4d940e0 100644 --- a/tests/Unit/Drivers/Imagick/Modifiers/ResizeCanvasModifierTest.php +++ b/tests/Unit/Drivers/Imagick/Modifiers/ResizeCanvasModifierTest.php @@ -40,6 +40,20 @@ final class ResizeCanvasModifierTest extends ImagickTestCase $this->assertColor(180, 224, 0, 255, $image->pickColor(2, 2)); $this->assertColor(255, 255, 0, 255, $image->pickColor(17, 17)); $this->assertTransparency($image->pickColor(12, 1)); + + $image = $this->createTestImage(16, 16)->fill('f00'); + $image->modify(new ResizeCanvasModifier(32, 32, '00f5', 'center')); + $this->assertEquals(32, $image->width()); + $this->assertEquals(32, $image->height()); + $this->assertColor(0, 0, 255, 77, $image->pickColor(5, 5)); + $this->assertColor(0, 0, 255, 77, $image->pickColor(16, 5)); + $this->assertColor(0, 0, 255, 77, $image->pickColor(30, 5)); + $this->assertColor(0, 0, 255, 77, $image->pickColor(5, 16)); + $this->assertColor(255, 0, 0, 255, $image->pickColor(16, 16)); + $this->assertColor(0, 0, 255, 77, $image->pickColor(30, 16)); + $this->assertColor(0, 0, 255, 77, $image->pickColor(5, 30)); + $this->assertColor(0, 0, 255, 77, $image->pickColor(16, 30)); + $this->assertColor(0, 0, 255, 77, $image->pickColor(30, 30)); } public function testModifyEdge(): void