From 99038d3a75d6cf1460b5175a8228e1b57bab3109 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Fri, 22 Oct 2021 16:15:49 +0200 Subject: [PATCH] Refactoring --- src/Drivers/Abstract/AbstractImage.php | 21 +++++++++++++++++-- .../Gd/Decoders/BinaryImageDecoder.php | 3 ++- src/Drivers/Gd/Image.php | 12 ----------- src/Drivers/Imagick/Image.php | 10 --------- 4 files changed, 21 insertions(+), 25 deletions(-) diff --git a/src/Drivers/Abstract/AbstractImage.php b/src/Drivers/Abstract/AbstractImage.php index 9467c67d..00f970a7 100644 --- a/src/Drivers/Abstract/AbstractImage.php +++ b/src/Drivers/Abstract/AbstractImage.php @@ -18,6 +18,12 @@ abstract class AbstractImage use CanResolveDriverClass; protected $loops = 0; + protected $frames; + + public function __construct(Collection $frames) + { + $this->frames = $frames; + } public function getIterator(): Collection { @@ -70,11 +76,22 @@ abstract class AbstractImage public function toJpeg(?int $quality = null): string { - return $this->encode($this->resolveDriverClass('Encoders\JpegEncoder', $quality)); + return $this->encode( + $this->resolveDriverClass('Encoders\JpegEncoder', $quality) + ); } public function toGif(): string { - return $this->encode($this->resolveDriverClass('Encoders\GifEncoder')); + return $this->encode( + $this->resolveDriverClass('Encoders\GifEncoder') + ); + } + + public function greyscale(): ImageInterface + { + return $this->modify( + $this->resolveDriverClass('Modifiers\GreyscaleModifier') + ); } } diff --git a/src/Drivers/Gd/Decoders/BinaryImageDecoder.php b/src/Drivers/Gd/Decoders/BinaryImageDecoder.php index fcc2c992..478ae7f6 100644 --- a/src/Drivers/Gd/Decoders/BinaryImageDecoder.php +++ b/src/Drivers/Gd/Decoders/BinaryImageDecoder.php @@ -40,12 +40,13 @@ class BinaryImageDecoder extends AbstractDecoder implements DecoderInterface $image = new Image(new Collection()); $gif = GifDecoder::decode($input); - $image->setLoops($gif->getMainApplicationExtension()?->getLoops()); if (!$gif->isAnimated()) { return $image->addFrame(new Frame(@imagecreatefromstring($input))); } + $image->setLoops($gif->getMainApplicationExtension()?->getLoops()); + $splitter = GifSplitter::create($gif)->split(); $delays = $splitter->getDelays(); foreach ($splitter->coalesceToResources() as $key => $gd) { diff --git a/src/Drivers/Gd/Image.php b/src/Drivers/Gd/Image.php index 5f331569..751f4d4b 100644 --- a/src/Drivers/Gd/Image.php +++ b/src/Drivers/Gd/Image.php @@ -14,13 +14,6 @@ use IteratorAggregate; class Image extends AbstractImage implements ImageInterface, IteratorAggregate { - protected $loops = 0; - - public function __construct(protected Collection $frames) - { - // - } - public function width(): int { return imagesx($this->frames->first()->getCore()); @@ -30,9 +23,4 @@ class Image extends AbstractImage implements ImageInterface, IteratorAggregate { return imagesy($this->frames->first()->getCore()); } - - public function greyscale(): ImageInterface - { - return $this->modify(new Modifiers\GreyscaleModifier()); - } } diff --git a/src/Drivers/Imagick/Image.php b/src/Drivers/Imagick/Image.php index be0a3afc..47073a25 100644 --- a/src/Drivers/Imagick/Image.php +++ b/src/Drivers/Imagick/Image.php @@ -13,11 +13,6 @@ use IteratorAggregate; class Image extends AbstractImage implements ImageInterface, IteratorAggregate { - public function __construct(protected Collection $frames) - { - // - } - public function width(): int { return $this->frames->first()->getCore()->getImageWidth(); @@ -27,9 +22,4 @@ class Image extends AbstractImage implements ImageInterface, IteratorAggregate { return $this->frames->first()->getCore()->getImageHeight(); } - - public function greyscale(): ImageInterface - { - return $this->modify(new Modifiers\GreyscaleModifier()); - } }