Skip to content
Snippets Groups Projects

Issue #3189190 - Support Imagick and ImageMagick toolkits

1 file
+ 17
6
Compare changes
  • Side-by-side
  • Inline
@@ -18,14 +18,25 @@ class WebP extends ConfigurableImageAPIOptimizeProcessorBase {
* {@inheritdoc}
*/
public function applyToImage($image_uri) {
$source_image = $this->imageFactory->get($image_uri, 'gd');
$toolkit_id = $this->imageFactory->getToolkitId();
$source_image = $this->imageFactory->get($image_uri, $toolkit_id);
if ($source_image) {
$destination = $image_uri . '.webp';
// @todo: Add try/catch.
imagewebp($source_image->getToolkit()->getResource(), $destination, $this->configuration['quality']);
// Fix issue where sometimes image fails to generate.
if (filesize($destination) % 2 == 1) {
file_put_contents($destination, "\0", FILE_APPEND);
if (in_array('webp', $this->imageFactory->getSupportedExtensions())) {
$source_image->apply('convert', [
'format' => 'webp',
'quality' => $this->configuration['quality'],
]);
$source_image->save($destination);
} else {
imagewebp($source_image->getToolkit()
->getResource(), $destination, $this->configuration['quality']);
// Fix issue where sometimes image fails to generate.
if (filesize($destination) % 2 == 1) {
file_put_contents($destination, "\0", FILE_APPEND);
}
}
return TRUE;
}
Loading