diff --git a/src/Drivers/AbstractDecoder.php b/src/Drivers/AbstractDecoder.php index 0c5b2145..9550de96 100644 --- a/src/Drivers/AbstractDecoder.php +++ b/src/Drivers/AbstractDecoder.php @@ -86,7 +86,7 @@ abstract class AbstractDecoder extends DriverSpecialized implements DecoderInter default => $this->buildFilePointer($path_or_data), // data }; - // extract exif data via file path + // extract exif data $data = @exif_read_data($source, null, true); if (is_resource($source)) { fclose($source); diff --git a/src/Drivers/Gd/Decoders/Traits/CanDecodeGif.php b/src/Drivers/Gd/Decoders/Traits/CanDecodeGif.php index 6faca1ff..07479c5d 100644 --- a/src/Drivers/Gd/Decoders/Traits/CanDecodeGif.php +++ b/src/Drivers/Gd/Decoders/Traits/CanDecodeGif.php @@ -41,6 +41,12 @@ trait CanDecodeGif ); } - return new Image(new Driver(), $core); + // create image + $image = new Image(new Driver(), $core); + + // set media type + $image->origin()->setMediaType('image/gif'); + + return $image; } } diff --git a/tests/Drivers/Gd/Traits/CanDecodeGifTest.php b/tests/Drivers/Gd/Traits/CanDecodeGifTest.php new file mode 100644 index 00000000..44d2299a --- /dev/null +++ b/tests/Drivers/Gd/Traits/CanDecodeGifTest.php @@ -0,0 +1,57 @@ +makePartial(); + + $result = $decoder->decodeGif($this->getTestImageData('animation.gif')); + $this->assertInstanceOf(ImageInterface::class, $result); + $this->assertEquals('image/gif', $result->origin()->mediaType()); + } + + public function testDecodeGifFromBinaryStatic(): void + { + $decoder = Mockery::mock(new class () { + use CanDecodeGif; + })->makePartial(); + + $result = $decoder->decodeGif($this->getTestImageData('red.gif')); + $this->assertInstanceOf(ImageInterface::class, $result); + $this->assertEquals('image/gif', $result->origin()->mediaType()); + } + + public function testDecodeGifFromPathAnimation(): void + { + $decoder = Mockery::mock(new class () { + use CanDecodeGif; + })->makePartial(); + + $result = $decoder->decodeGif($this->getTestImagePath('animation.gif')); + $this->assertInstanceOf(ImageInterface::class, $result); + $this->assertEquals('image/gif', $result->origin()->mediaType()); + } + + public function testDecodeGifFromPathStatic(): void + { + $decoder = Mockery::mock(new class () { + use CanDecodeGif; + })->makePartial(); + + $result = $decoder->decodeGif($this->getTestImagePath('red.gif')); + $this->assertInstanceOf(ImageInterface::class, $result); + $this->assertEquals('image/gif', $result->origin()->mediaType()); + } +}