Skip to content

Commit 8f62b10

Browse files
authored
Merge pull request #333 from gijsdev/avif
Add support for AVIF
2 parents 244d3f6 + a302e93 commit 8f62b10

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
],
2828
"require": {
2929
"php": "^7.2|^8.0",
30-
"intervention/image": "^2.4",
30+
"intervention/image": "^2.7",
3131
"league/flysystem": "^2.0",
3232
"psr/http-message": "^1.0"
3333
},

docs/2.0/api/encode.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Defines the quality of the image. Use values between `0` and `100`. Defaults to
1818

1919
## Format `fm`
2020

21-
Encodes the image to a specific format. Accepts `jpg`, `pjpg` (progressive jpeg), `png`, `gif` or `webp`. Defaults to `jpg`.
21+
Encodes the image to a specific format. Accepts `jpg`, `pjpg` (progressive jpeg), `png`, `gif`, `webp` or `avif`. Defaults to `jpg`.
2222

2323
~~~ html
2424
<img src="kayaks.jpg?w=500&fm=gif">

src/Manipulators/Encode.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public function run(Image $image)
4646
public function getFormat(Image $image)
4747
{
4848
$allowed = [
49+
'avif' => 'image/avif',
4950
'gif' => 'image/gif',
5051
'jpg' => 'image/jpeg',
5152
'pjpg' => 'image/jpeg',

tests/Manipulators/EncodeTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class EncodeTest extends TestCase
1414
private $gif;
1515
private $tif;
1616
private $webp;
17+
private $avif;
1718

1819
public function setUp(): void
1920
{
@@ -26,6 +27,10 @@ public function setUp(): void
2627
$this->webp = $manager->canvas(100, 100)->encode('webp');
2728
}
2829

30+
if (function_exists('imagecreatefromavif')) {
31+
$this->avif = $manager->canvas(100, 100)->encode('avif');
32+
}
33+
2934
$this->manipulator = new Encode();
3035
}
3136

@@ -64,6 +69,21 @@ public function testRun()
6469
$this->assertSame('image/webp', $this->manipulator->setParams(['fm' => 'webp'])->run($this->gif)->mime);
6570
$this->assertSame('image/webp', $this->manipulator->setParams(['fm' => 'webp'])->run($this->webp)->mime);
6671
}
72+
if (function_exists('imagecreatefromavif')) {
73+
$this->assertSame('image/jpeg', $this->manipulator->setParams(['fm' => 'jpg'])->run($this->avif)->mime);
74+
$this->assertSame('image/jpeg', $this->manipulator->setParams(['fm' => 'pjpg'])->run($this->avif)->mime);
75+
$this->assertSame('image/png', $this->manipulator->setParams(['fm' => 'png'])->run($this->avif)->mime);
76+
$this->assertSame('image/gif', $this->manipulator->setParams(['fm' => 'gif'])->run($this->avif)->mime);
77+
$this->assertSame('image/avif', $this->manipulator->setParams(['fm' => 'avif'])->run($this->jpg)->mime);
78+
$this->assertSame('image/avif', $this->manipulator->setParams(['fm' => 'avif'])->run($this->png)->mime);
79+
$this->assertSame('image/avif', $this->manipulator->setParams(['fm' => 'avif'])->run($this->gif)->mime);
80+
$this->assertSame('image/avif', $this->manipulator->setParams(['fm' => 'avif'])->run($this->avif)->mime);
81+
}
82+
83+
if (function_exists('imagecreatefromwebp') && function_exists('imagecreatefromavif')) {
84+
$this->assertSame('image/webp', $this->manipulator->setParams(['fm' => 'webp'])->run($this->avif)->mime);
85+
$this->assertSame('image/avif', $this->manipulator->setParams(['fm' => 'avif'])->run($this->webp)->mime);
86+
}
6787
}
6888

6989
public function testGetFormat()
@@ -78,6 +98,9 @@ public function testGetFormat()
7898
if (function_exists('imagecreatefromwebp')) {
7999
$mock->shouldReceive('mime')->andReturn('image/webp')->once();
80100
}
101+
if (function_exists('imagecreatefromavif')) {
102+
$mock->shouldReceive('mime')->andReturn('image/avif')->once();
103+
}
81104
});
82105

83106
$this->assertSame('jpg', $this->manipulator->setParams(['fm' => 'jpg'])->getFormat($image));
@@ -93,6 +116,10 @@ public function testGetFormat()
93116
if (function_exists('imagecreatefromwebp')) {
94117
$this->assertSame('webp', $this->manipulator->setParams(['fm' => null])->getFormat($image));
95118
}
119+
120+
if (function_exists('imagecreatefromavif')) {
121+
$this->assertSame('avif', $this->manipulator->setParams(['fm' => null])->getFormat($image));
122+
}
96123
}
97124

98125
public function testGetQuality()

0 commit comments

Comments
 (0)