diff --git a/src/Drivers/Imagick/Decoders/NativeObjectDecoder.php b/src/Drivers/Imagick/Decoders/NativeObjectDecoder.php index 9d65e09e..3f23902d 100644 --- a/src/Drivers/Imagick/Decoders/NativeObjectDecoder.php +++ b/src/Drivers/Imagick/Decoders/NativeObjectDecoder.php @@ -11,10 +11,11 @@ use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Image; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\ImageInterface; +use Intervention\Image\Interfaces\SpecializedInterface; use Intervention\Image\Modifiers\AlignRotationModifier; use Intervention\Image\Modifiers\RemoveAnimationModifier; -class NativeObjectDecoder extends SpecializableDecoder +class NativeObjectDecoder extends SpecializableDecoder implements SpecializedInterface { public function decode(mixed $input): ImageInterface|ColorInterface { diff --git a/src/InputHandler.php b/src/InputHandler.php index e77638b8..2772ec45 100644 --- a/src/InputHandler.php +++ b/src/InputHandler.php @@ -95,17 +95,19 @@ class InputHandler implements InputHandlerInterface public function handle($input): ImageInterface|ColorInterface { foreach ($this->decoders as $decoder) { - // resolve driver specialized decoder - $decoder = $this->resolve($decoder); - try { - return $decoder->decode($input); - } catch (DecoderException $e) { + // decode with driver specialized decoder + return $this->resolve($decoder)->decode($input); + } catch (DecoderException | NotSupportedException $e) { // try next decoder } } - throw new DecoderException(isset($e) ? $e->getMessage() : ''); + if (isset($e)) { + throw new ($e::class)($e->getMessage()); + } + + throw new DecoderException('Unable to decode input.'); } /**