From f5e3db78abe9392a97a8874d720f48d73fa4108b Mon Sep 17 00:00:00 2001 From: Michal Borychowski <807297+boryn@users.noreply.github.com> Date: Mon, 9 Oct 2023 09:17:37 +0200 Subject: [PATCH] added heic support (#3399) --- src/Conversions/ImageGenerators/Image.php | 4 ++++ .../Conversions/ImageGenerators/ImageTest.php | 19 ++++++++++++++++++ tests/TestCase.php | 5 +++++ tests/TestSupport/testfiles/test.heic | Bin 0 -> 29208 bytes 4 files changed, 28 insertions(+) create mode 100644 tests/TestSupport/testfiles/test.heic diff --git a/src/Conversions/ImageGenerators/Image.php b/src/Conversions/ImageGenerators/Image.php index 3512d3e40..c57402697 100644 --- a/src/Conversions/ImageGenerators/Image.php +++ b/src/Conversions/ImageGenerators/Image.php @@ -22,6 +22,8 @@ public function supportedExtensions(): Collection $extensions = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'avif']; if (config('media-library.image_driver') === 'imagick') { $extensions[] = 'tiff'; + $extensions[] = 'heic'; + $extensions[] = 'heif'; } return collect($extensions); @@ -32,6 +34,8 @@ public function supportedMimeTypes(): Collection $mimeTypes = ['image/jpeg', 'image/gif', 'image/png', 'image/webp', 'image/avif']; if (config('media-library.image_driver') === 'imagick') { $mimeTypes[] = 'image/tiff'; + $mimeTypes[] = 'image/heic'; + $mimeTypes[] = 'image/heif'; } return collect($mimeTypes); diff --git a/tests/Conversions/ImageGenerators/ImageTest.php b/tests/Conversions/ImageGenerators/ImageTest.php index 86676b407..f39becdd8 100644 --- a/tests/Conversions/ImageGenerators/ImageTest.php +++ b/tests/Conversions/ImageGenerators/ImageTest.php @@ -33,3 +33,22 @@ function () { expect($media->getPath())->toEqual($imageFile); } )->skip(! extension_loaded('imagick'), 'The imagick extension is not available.'); + +it( + 'can convert a heic image', + function () { + //heic format requires imagick + config(['media-library.image_driver' => 'imagick']); + + $imageGenerator = new Image(); + + $media = $this->testModelWithoutMediaConversions->addMedia($this->getTestHeic())->toMediaCollection(); + + expect($imageGenerator->canConvert($media))->toBeTrue(); + + $imageFile = $imageGenerator->convert($media->getPath()); + + expect(mime_content_type($imageFile))->toEqual('image/heic'); + expect($media->getPath())->toEqual($imageFile); + } +)->skip(! extension_loaded('imagick'), 'The imagick extension is not available.'); diff --git a/tests/TestCase.php b/tests/TestCase.php index c5d8448e7..7d2b9d7bf 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -243,6 +243,11 @@ public function getTestAvif(): string return $this->getTestFilesDirectory('test.avif'); } + public function getTestHeic(): string + { + return $this->getTestFilesDirectory('test.heic'); + } + public function getTestMp4(): string { return $this->getTestFilesDirectory('test.mp4'); diff --git a/tests/TestSupport/testfiles/test.heic b/tests/TestSupport/testfiles/test.heic new file mode 100644 index 0000000000000000000000000000000000000000..788e0e82734e7414050f2ac8c12664cca8e82dc6 GIT binary patch literal 29208 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 literal 0 HcmV?d00001