1
0
mirror of https://github.com/Intervention/image.git synced 2025-09-02 02:12:37 +02:00

feature/strip encoder parameter (#1421)

Add config option and encoder parameter to strip meta data in the encoding process.

---------

Co-authored-by: Thomas <thomas@sctr.net>
This commit is contained in:
Oliver Vogel
2025-01-18 16:42:14 +01:00
committed by GitHub
parent 49c7cd0890
commit 6b9ce4fc44
25 changed files with 186 additions and 11 deletions

View File

@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Drivers\Imagick\Encoders\AvifEncoder;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
@@ -17,6 +18,7 @@ final class AvifEncoderTest extends ImagickTestCase
{
$image = $this->createTestImage(3, 2);
$encoder = new AvifEncoder(10);
$encoder->setDriver(new Driver());
$result = $encoder->encode($image);
$this->assertMediaType('image/avif', $result);
$this->assertEquals('image/avif', $result->mimetype());

View File

@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Drivers\Imagick\Encoders\HeicEncoder;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
@@ -17,6 +18,7 @@ final class HeicEncoderTest extends ImagickTestCase
{
$image = $this->createTestImage(3, 2);
$encoder = new HeicEncoder(75);
$encoder->setDriver(new Driver());
$result = $encoder->encode($image);
$this->assertMediaType('image/heic', $result);
$this->assertEquals('image/heic', $result->mimetype());

View File

@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Drivers\Imagick\Encoders\Jpeg2000Encoder;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
@@ -17,6 +18,7 @@ final class Jpeg2000EncoderTest extends ImagickTestCase
{
$image = $this->createTestImage(3, 2);
$encoder = new Jpeg2000Encoder(75);
$encoder->setDriver(new Driver());
$result = $encoder->encode($image);
$this->assertMediaType('image/jp2', $result);
$this->assertEquals('image/jp2', $result->mimetype());

View File

@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders;
use Intervention\Image\Drivers\Imagick\Decoders\FilePointerImageDecoder;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Drivers\Imagick\Encoders\JpegEncoder;
use PHPUnit\Framework\Attributes\CoversClass;
@@ -37,4 +38,34 @@ final class JpegEncoderTest extends ImagickTestCase
$this->assertEquals('image/jpeg', $result->mimetype());
$this->assertTrue($this->isProgressiveJpeg($result));
}
public function testEncodeStripExif(): void
{
$image = $this->readTestImage('exif.jpg');
$this->assertEquals('Oliver Vogel', $image->exif('IFD0.Artist'));
$encoder = new JpegEncoder(strip: true);
$encoder->setDriver(new Driver());
$result = $encoder->encode($image);
$this->assertMediaType('image/jpeg', $result);
$this->assertEquals('image/jpeg', $result->mimetype());
$this->assertEmpty(exif_read_data($result->toFilePointer())['IFD0.Artist'] ?? null);
}
public function testEncodeStripExifKeepICCProfiles(): void
{
$image = $this->readTestImage('cmyk.jpg');
$this->assertNotEmpty($image->core()->native()->getImageProfiles('icc'));
$encoder = new JpegEncoder(strip: true);
$encoder->setDriver(new Driver());
$result = $encoder->encode($image);
$decoder = new FilePointerImageDecoder();
$decoder->setDriver(new Driver());
$image = $decoder->decode($result->toFilePointer());
$this->assertNotEmpty($image->core()->native()->getImageProfiles('icc'));
}
}

View File

@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Drivers\Imagick\Encoders\TiffEncoder;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
@@ -17,6 +18,7 @@ final class TiffEncoderTest extends ImagickTestCase
{
$image = $this->createTestImage(3, 2);
$encoder = new TiffEncoder();
$encoder->setDriver(new Driver());
$result = $encoder->encode($image);
$this->assertMediaType('image/tiff', $result);
$this->assertEquals('image/tiff', $result->mimetype());

View File

@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Drivers\Imagick\Encoders\WebpEncoder;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
@@ -17,6 +18,7 @@ final class WebpEncoderTest extends ImagickTestCase
{
$image = $this->createTestImage(3, 2);
$encoder = new WebpEncoder(75);
$encoder->setDriver(new Driver());
$result = $encoder->encode($image);
$this->assertMediaType('image/webp', $result);
$this->assertEquals('image/webp', $result->mimetype());