Skip to content

Commit

Permalink
Revert imagick encoders to use Imagick::getImagesBlob()
Browse files Browse the repository at this point in the history
  • Loading branch information
olivervogel committed Oct 5, 2024
1 parent cb464e1 commit 8e4875f
Show file tree
Hide file tree
Showing 9 changed files with 18 additions and 31 deletions.
5 changes: 2 additions & 3 deletions src/Drivers/Imagick/Encoders/AvifEncoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace Intervention\Image\Drivers\Imagick\Encoders;

use Imagick;
use Intervention\Image\EncodedImage;
use Intervention\Image\Encoders\AvifEncoder as GenericAvifEncoder;
use Intervention\Image\Interfaces\EncodedImageInterface;
use Intervention\Image\Interfaces\ImageInterface;
Expand All @@ -25,8 +26,6 @@ public function encode(ImageInterface $image): EncodedImageInterface
$imagick->setCompressionQuality($this->quality);
$imagick->setImageCompressionQuality($this->quality);

return $this->createEncodedImage(function ($pointer) use ($imagick, $format) {
$imagick->writeImageFile($pointer, $format);
});
return new EncodedImage($imagick->getImagesBlob());
}
}
5 changes: 2 additions & 3 deletions src/Drivers/Imagick/Encoders/BmpEncoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace Intervention\Image\Drivers\Imagick\Encoders;

use Imagick;
use Intervention\Image\EncodedImage;
use Intervention\Image\Encoders\BmpEncoder as GenericBmpEncoder;
use Intervention\Image\Interfaces\EncodedImageInterface;
use Intervention\Image\Interfaces\ImageInterface;
Expand All @@ -23,8 +24,6 @@ public function encode(ImageInterface $image): EncodedImageInterface
$imagick->setCompression($compression);
$imagick->setImageCompression($compression);

return $this->createEncodedImage(function ($pointer) use ($imagick, $format) {
$imagick->writeImageFile($pointer, $format);
});
return new EncodedImage($imagick->getImagesBlob());
}
}
5 changes: 2 additions & 3 deletions src/Drivers/Imagick/Encoders/GifEncoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace Intervention\Image\Drivers\Imagick\Encoders;

use Imagick;
use Intervention\Image\EncodedImage;
use Intervention\Image\Encoders\GifEncoder as GenericGifEncoder;
use Intervention\Image\Interfaces\EncodedImageInterface;
use Intervention\Image\Interfaces\ImageInterface;
Expand All @@ -28,8 +29,6 @@ public function encode(ImageInterface $image): EncodedImageInterface
$imagick->setInterlaceScheme(Imagick::INTERLACE_LINE);
}

return $this->createEncodedImage(function ($pointer) use ($imagick, $format) {
$imagick->writeImageFile($pointer, $format);
});
return new EncodedImage($imagick->getImagesBlob());
}
}
6 changes: 2 additions & 4 deletions src/Drivers/Imagick/Encoders/HeicEncoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Intervention\Image\Drivers\Imagick\Encoders;

use Intervention\Image\EncodedImage;
use Intervention\Image\Encoders\HeicEncoder as GenericHeicEncoder;
use Intervention\Image\Interfaces\EncodedImageInterface;
use Intervention\Image\Interfaces\ImageInterface;
Expand All @@ -16,14 +17,11 @@ public function encode(ImageInterface $image): EncodedImageInterface
$format = 'HEIC';

$imagick = $image->core()->native();

$imagick->setFormat($format);
$imagick->setImageFormat($format);
$imagick->setCompressionQuality($this->quality);
$imagick->setImageCompressionQuality($this->quality);

return $this->createEncodedImage(function ($pointer) use ($imagick, $format) {
$imagick->writeImageFile($pointer, $format);
});
return new EncodedImage($imagick->getImagesBlob());
}
}
3 changes: 0 additions & 3 deletions src/Drivers/Imagick/Encoders/Jpeg2000Encoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,6 @@ public function encode(ImageInterface $image): EncodedImageInterface
$imagick->setCompressionQuality($this->quality);
$imagick->setImageCompressionQuality($this->quality);

// encoding fails with Imagick::writeImageFile() for JP2 format
// The reasons are unknown, but could be fixed by Imagick/Imagemagick
// in the future. Until then, I use getImagesBlob() for Jpeg2000.
return new EncodedImage($imagick->getImagesBlob());
}
}
5 changes: 2 additions & 3 deletions src/Drivers/Imagick/Encoders/JpegEncoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace Intervention\Image\Drivers\Imagick\Encoders;

use Imagick;
use Intervention\Image\EncodedImage;
use Intervention\Image\Encoders\JpegEncoder as GenericJpegEncoder;
use Intervention\Image\Interfaces\EncodedImageInterface;
use Intervention\Image\Interfaces\ImageInterface;
Expand Down Expand Up @@ -44,8 +45,6 @@ public function encode(ImageInterface $image): EncodedImageInterface
$imagick->setInterlaceScheme(Imagick::INTERLACE_PLANE);
}

return $this->createEncodedImage(function ($pointer) use ($imagick, $format) {
$imagick->writeImageFile($pointer, $format);
});
return new EncodedImage($imagick->getImagesBlob());
}
}
12 changes: 6 additions & 6 deletions src/Drivers/Imagick/Encoders/PngEncoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace Intervention\Image\Drivers\Imagick\Encoders;

use Imagick;
use Intervention\Image\EncodedImage;
use Intervention\Image\Encoders\PngEncoder as GenericPngEncoder;
use Intervention\Image\Interfaces\EncodedImageInterface;
use Intervention\Image\Interfaces\ImageInterface;
Expand All @@ -25,8 +26,12 @@ public function encode(ImageInterface $image): EncodedImageInterface
$output->reduceColors(256);

$output = $output->core()->native();
$output->setFormat('PNG');
$output->setImageFormat('PNG');
} else {
$output = clone $image->core()->native();
$output->setFormat('PNG32');
$output->setImageFormat('PNG32');
}

$output->setCompression(Imagick::COMPRESSION_ZIP);
Expand All @@ -36,11 +41,6 @@ public function encode(ImageInterface $image): EncodedImageInterface
$output->setInterlaceScheme(Imagick::INTERLACE_LINE);
}

return $this->createEncodedImage(function ($pointer) use ($output) {
$output->writeImageFile(
$pointer,
$this->indexed ? 'PNG' : 'PNG32',
);
});
return new EncodedImage($output->getImagesBlob());
}
}
3 changes: 0 additions & 3 deletions src/Drivers/Imagick/Encoders/TiffEncoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,6 @@ public function encode(ImageInterface $image): EncodedImageInterface
$imagick->setCompressionQuality($this->quality);
$imagick->setImageCompressionQuality($this->quality);

// encoding fails with Imagick::writeImageFile() for TIFF format
// the reasons are unknown, but could be fixed by Imagick/Imagemagick
// in the future. Until then, I use getImagesBlob() for Jpeg2000.
return new EncodedImage($imagick->getImagesBlob());
}
}
5 changes: 2 additions & 3 deletions src/Drivers/Imagick/Encoders/WebpEncoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

use Imagick;
use ImagickPixel;
use Intervention\Image\EncodedImage;
use Intervention\Image\Encoders\WebpEncoder as GenericWebpEncoder;
use Intervention\Image\Interfaces\EncodedImageInterface;
use Intervention\Image\Interfaces\ImageInterface;
Expand All @@ -31,8 +32,6 @@ public function encode(ImageInterface $image): EncodedImageInterface
$imagick->setImageCompression($compression);
$imagick->setImageCompressionQuality($this->quality);

return $this->createEncodedImage(function ($pointer) use ($imagick, $format) {
$imagick->writeImageFile($pointer, $format);
});
return new EncodedImage($imagick->getImagesBlob());
}
}

0 comments on commit 8e4875f

Please sign in to comment.