From 66794138e267eefd88fe6196a41bfc860d5f408d Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Sun, 28 Nov 2021 09:13:50 +0000 Subject: [PATCH] TransparentColorDecoder --- src/Drivers/Abstract/AbstractImage.php | 4 ++-- .../Gd/Decoders/TransparentColorDecoder.php | 21 +++++++++++++++++++ src/Drivers/Gd/InputHandler.php | 10 +++++---- .../Decoders/TransparentColorDecoder.php | 21 +++++++++++++++++++ src/Drivers/Imagick/InputHandler.php | 10 +++++---- .../Decoders/TransparentColorDecoderTest.php | 21 +++++++++++++++++++ .../Decoders/TransparentColorDecoderTest.php | 21 +++++++++++++++++++ 7 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 src/Drivers/Gd/Decoders/TransparentColorDecoder.php create mode 100644 src/Drivers/Imagick/Decoders/TransparentColorDecoder.php create mode 100644 tests/Drivers/Gd/Decoders/TransparentColorDecoderTest.php create mode 100644 tests/Drivers/Imagick/Decoders/TransparentColorDecoderTest.php diff --git a/src/Drivers/Abstract/AbstractImage.php b/src/Drivers/Abstract/AbstractImage.php index 71b05e9b..2837a3cd 100644 --- a/src/Drivers/Abstract/AbstractImage.php +++ b/src/Drivers/Abstract/AbstractImage.php @@ -199,7 +199,7 @@ abstract class AbstractImage ); } - public function pad(int $width, int $height, string $position = 'center', $backgroundColor = 'fff'): ImageInterface + public function pad(int $width, int $height, string $position = 'center', $backgroundColor = 'transparent'): ImageInterface { // original $imagesize = $this->getSize(); @@ -212,7 +212,7 @@ abstract class AbstractImage ); } - public function padDown(int $width, int $height, string $position = 'center', $backgroundColor = 'fff'): ImageInterface + public function padDown(int $width, int $height, string $position = 'center', $backgroundColor = 'transparent'): ImageInterface { // original $imagesize = $this->getSize(); diff --git a/src/Drivers/Gd/Decoders/TransparentColorDecoder.php b/src/Drivers/Gd/Decoders/TransparentColorDecoder.php new file mode 100644 index 00000000..dd77d055 --- /dev/null +++ b/src/Drivers/Gd/Decoders/TransparentColorDecoder.php @@ -0,0 +1,21 @@ +fail(); + } + + return parent::decode([0, 0, 0, 0]); + } +} diff --git a/src/Drivers/Gd/InputHandler.php b/src/Drivers/Gd/InputHandler.php index 7950e73f..02fabd68 100644 --- a/src/Drivers/Gd/InputHandler.php +++ b/src/Drivers/Gd/InputHandler.php @@ -11,10 +11,12 @@ class InputHandler extends AbstractInputHandler { return new Decoders\ArrayColorDecoder( new Decoders\HexColorDecoder( - new Decoders\FilePathImageDecoder( - new Decoders\BinaryImageDecoder( - new Decoders\DataUriImageDecoder( - new Decoders\Base64ImageDecoder() + new Decoders\TransparentColorDecoder( + new Decoders\FilePathImageDecoder( + new Decoders\BinaryImageDecoder( + new Decoders\DataUriImageDecoder( + new Decoders\Base64ImageDecoder() + ) ) ) ) diff --git a/src/Drivers/Imagick/Decoders/TransparentColorDecoder.php b/src/Drivers/Imagick/Decoders/TransparentColorDecoder.php new file mode 100644 index 00000000..5d3e3153 --- /dev/null +++ b/src/Drivers/Imagick/Decoders/TransparentColorDecoder.php @@ -0,0 +1,21 @@ +fail(); + } + + return parent::decode([0, 0, 0, 0]); + } +} diff --git a/src/Drivers/Imagick/InputHandler.php b/src/Drivers/Imagick/InputHandler.php index 2062fa71..fa5cd226 100644 --- a/src/Drivers/Imagick/InputHandler.php +++ b/src/Drivers/Imagick/InputHandler.php @@ -11,10 +11,12 @@ class InputHandler extends AbstractInputHandler { return new Decoders\ArrayColorDecoder( new Decoders\HexColorDecoder( - new Decoders\FilePathImageDecoder( - new Decoders\BinaryImageDecoder( - new Decoders\DataUriImageDecoder( - new Decoders\Base64ImageDecoder() + new Decoders\TransparentColorDecoder( + new Decoders\FilePathImageDecoder( + new Decoders\BinaryImageDecoder( + new Decoders\DataUriImageDecoder( + new Decoders\Base64ImageDecoder() + ) ) ) ) diff --git a/tests/Drivers/Gd/Decoders/TransparentColorDecoderTest.php b/tests/Drivers/Gd/Decoders/TransparentColorDecoderTest.php new file mode 100644 index 00000000..d0864d48 --- /dev/null +++ b/tests/Drivers/Gd/Decoders/TransparentColorDecoderTest.php @@ -0,0 +1,21 @@ +decode('transparent'); + $this->assertInstanceOf(Color::class, $color); + $this->assertEquals(0, $color->red()); + $this->assertEquals(0, $color->green()); + $this->assertEquals(0, $color->blue()); + $this->assertEquals(0, $color->alpha()); + } +} diff --git a/tests/Drivers/Imagick/Decoders/TransparentColorDecoderTest.php b/tests/Drivers/Imagick/Decoders/TransparentColorDecoderTest.php new file mode 100644 index 00000000..915842bd --- /dev/null +++ b/tests/Drivers/Imagick/Decoders/TransparentColorDecoderTest.php @@ -0,0 +1,21 @@ +decode('transparent'); + $this->assertInstanceOf(Color::class, $color); + $this->assertEquals(0, $color->red()); + $this->assertEquals(0, $color->green()); + $this->assertEquals(0, $color->blue()); + $this->assertEquals(0, $color->alpha()); + } +}