From 66d744f5fb8868ff3cd7424e6fd0798321e73fe0 Mon Sep 17 00:00:00 2001 From: Gwendolen Lynch Date: Wed, 22 Dec 2021 12:41:59 +0100 Subject: [PATCH] Add toWebp() method to ImageInterface & AbstractImage --- src/Drivers/Abstract/AbstractImage.php | 9 +++++++-- src/Interfaces/ImageInterface.php | 4 +--- tests/AbstractImageTest.php | 21 ++++++++++++++++++--- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/Drivers/Abstract/AbstractImage.php b/src/Drivers/Abstract/AbstractImage.php index 29ae8f9b..4d11c373 100644 --- a/src/Drivers/Abstract/AbstractImage.php +++ b/src/Drivers/Abstract/AbstractImage.php @@ -4,9 +4,7 @@ namespace Intervention\Image\Drivers\Abstract; use Intervention\Image\Collection; use Intervention\Image\EncodedImage; -use Intervention\Image\Exceptions\NotWritableException; use Intervention\Image\Geometry\Point; -use Intervention\Image\Geometry\Resizer; use Intervention\Image\Geometry\Size; use Intervention\Image\Interfaces\EncoderInterface; use Intervention\Image\Interfaces\FrameInterface; @@ -92,6 +90,13 @@ abstract class AbstractImage ); } + public function toWebp(int $quality = 75): EncodedImage + { + return $this->encode( + $this->resolveDriverClass('Encoders\WebpEncoder', $quality) + ); + } + public function toGif(): EncodedImage { return $this->encode( diff --git a/src/Interfaces/ImageInterface.php b/src/Interfaces/ImageInterface.php index 7fc9e750..182a76dc 100644 --- a/src/Interfaces/ImageInterface.php +++ b/src/Interfaces/ImageInterface.php @@ -4,9 +4,6 @@ namespace Intervention\Image\Interfaces; use Intervention\Image\Collection; use Intervention\Image\EncodedImage; -use Intervention\Image\Interfaces\FrameInterface; -use Intervention\Image\Interfaces\ImageInterface; -use Intervention\Image\Interfaces\SizeInterface; interface ImageInterface { @@ -21,6 +18,7 @@ interface ImageInterface public function modify(ModifierInterface $modifier): ImageInterface; public function encode(EncoderInterface $encoder): EncodedImage; public function toJpeg(int $quality = 75): EncodedImage; + public function toWebp(int $quality = 75): EncodedImage; public function toGif(): EncodedImage; public function toPng(): EncodedImage; public function pickColors(int $x, int $y): Collection; diff --git a/tests/AbstractImageTest.php b/tests/AbstractImageTest.php index ab2c5091..167fd200 100644 --- a/tests/AbstractImageTest.php +++ b/tests/AbstractImageTest.php @@ -3,7 +3,6 @@ namespace Intervention\Image\Tests; use Intervention\Image\Collection; -use Intervention\Image\Drivers\Abstract\AbstractFrame; use Intervention\Image\Drivers\Abstract\AbstractImage; use Intervention\Image\EncodedImage; use Intervention\Image\Geometry\Size; @@ -130,13 +129,29 @@ class AbstractImageTest extends TestCase $encoder->shouldReceive('encode')->with($img)->andReturn($encoded); $img->shouldReceive('resolveDriverClass') - ->with('Encoders\JpegEncoder', 45) - ->andReturn($encoder); + ->with('Encoders\JpegEncoder', 45) + ->andReturn($encoder); $result = $img->toJpeg(45); $this->assertInstanceOf(EncodedImage::class, $result); } + public function testToWebp(): void + { + $img = $this->abstractImageMock(); + + $encoded = Mockery::mock(EncodedImage::class); + $encoder = Mockery::mock(EncoderInterface::class); + $encoder->shouldReceive('encode')->with($img)->andReturn($encoded); + + $img->shouldReceive('resolveDriverClass') + ->with('Encoders\WebpEncoder', 45) + ->andReturn($encoder); + + $result = $img->toWebp(45); + $this->assertInstanceOf(EncodedImage::class, $result); + } + public function testToGif(): void { $img = $this->abstractImageMock();