diff --git a/src/Engine/PhpGd/Helper/ResourceHelper.php b/src/Engine/PhpGd/Helper/ResourceHelper.php index f8034b5..eddcdad 100644 --- a/src/Engine/PhpGd/Helper/ResourceHelper.php +++ b/src/Engine/PhpGd/Helper/ResourceHelper.php @@ -126,6 +126,9 @@ public function getContentsFromGdResource($format, $resource, array $options = [ break; case PhpGdContext::FORMAT_JPEG: $quality = isset($options['jpeg_quality']) ? $options['jpeg_quality'] : 100; + if (isset($options['jpeg_interlace'])) { + imageinterlace($resource, $options['jpeg_interlace']); + } $success = @imagejpeg($resource, null, $quality); break; case PhpGdContext::FORMAT_GIF: diff --git a/src/OptionPass/JpegInterlaceOptionPass.php b/src/OptionPass/JpegInterlaceOptionPass.php new file mode 100644 index 0000000..65561b0 --- /dev/null +++ b/src/OptionPass/JpegInterlaceOptionPass.php @@ -0,0 +1,25 @@ + + * @since 1.0.0 + */ +class JpegInterlaceOptionPass implements OptionPassInterface +{ + /** + * @inheritDoc + */ + public function process(array $options) + { + if ( + !isset($options['jpeg_interlace']) || + !is_bool($options['jpeg_interlace']) + ) { + $options['jpeg_interlace'] = false; + } + + return $options; + } +} diff --git a/tests/OptionPass/JpegInterlaceOptionPassTest.php b/tests/OptionPass/JpegInterlaceOptionPassTest.php new file mode 100644 index 0000000..fb7406c --- /dev/null +++ b/tests/OptionPass/JpegInterlaceOptionPassTest.php @@ -0,0 +1,31 @@ +pass = $this->getMock('Imagecraft\\OptionPass\\JpegInterlaceOptionPass', null); + } + + public function testProcess() + { + $option = $this->pass->process([]); + $this->assertEquals(false, $option['jpeg_interlace']); + + $option = $this->pass->process(['jpeg_interlace' => true]); + $this->assertEquals(true, $option['jpeg_interlace']); + + $option = $this->pass->process(['jpeg_interlace' => false]); + $this->assertEquals(false, $option['jpeg_interlace']); + + $option = $this->pass->process(['jpeg_interlace' => 10]); + $this->assertEquals(false, $option['jpeg_interlace']); + } +}