diff --git a/src/Drivers/Imagick/Modifiers/CropModifier.php b/src/Drivers/Imagick/Modifiers/CropModifier.php index d5b673c46..18fef3256 100644 --- a/src/Drivers/Imagick/Modifiers/CropModifier.php +++ b/src/Drivers/Imagick/Modifiers/CropModifier.php @@ -19,10 +19,12 @@ public function apply(ImageInterface $image): ImageInterface ); $imagick = new Imagick(); + $resolution = $image->resolution()->perInch(); foreach ($image as $frame) { $canvas = new Imagick(); $canvas->newImage($crop->width(), $crop->height(), $background, 'png'); + $canvas->setImageResolution($resolution->x(), $resolution->y()); $canvas->compositeImage( $frame->native(), diff --git a/tests/Unit/Drivers/Imagick/Modifiers/CropModifierTest.php b/tests/Unit/Drivers/Imagick/Modifiers/CropModifierTest.php index 2b3691f7c..73d74550f 100644 --- a/tests/Unit/Drivers/Imagick/Modifiers/CropModifierTest.php +++ b/tests/Unit/Drivers/Imagick/Modifiers/CropModifierTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Modifiers; +use Intervention\Image\Colors\Cmyk\Colorspace; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Modifiers\CropModifier; @@ -36,4 +37,20 @@ public function testModifyExtend(): void $this->assertColor(0, 0, 255, 255, $image->pickColor(445, 16)); $this->assertTransparency($image->pickColor(460, 16)); } + + public function testModifyKeepsColorspace(): void + { + $image = $this->readTestImage('cmyk.jpg'); + $this->assertInstanceOf(Colorspace::class, $image->colorspace()); + $image = $image->modify(new CropModifier(800, 100, -10, -10, 'ff0000')); + $this->assertInstanceOf(Colorspace::class, $image->colorspace()); + } + + public function testModifyKeepsResolution(): void + { + $image = $this->readTestImage('300dpi.png'); + $this->assertEquals(300, round($image->resolution()->perInch()->x())); + $image = $image->modify(new CropModifier(800, 100, -10, -10, 'ff0000')); + $this->assertEquals(300, round($image->resolution()->perInch()->x())); + } }