@denism300

Почему возникает ошибка при конвертации SVG в JPG?

Делал небольшой плагин для WP который в числе прочего конвертирует SVG в JPG. На моем хостинге все ок, на хостинге клиента ошибка
PHP Fatal error: Uncaught ImagickException: no decode delegate for this image format

На моем хостинге версия ImageMagick 7.1.0-20 Q16-HDRI x86_64 2022-01-22, версия PHP 8.2.4
У клиента ImageMagick 6.9.7-4 Q16 x86_64 20170114, версия php 8.2.13
Версии модуля Imagick одинаковые - 3.7.0
Поддержка хостинга клиента отказывается обновлять ImageMagick
Пакеты librsvg2, libxml2, Ghostscript, FreeType, libmagickcore-6.q16-3-extra у клиента на хостинге стоят
В чем еще может быть причина ошибки? И какие пакеты должны быть установлены, чтобы работало?
Код такой:
$imagick = new Imagick();
$imagick->readImageBlob($svg_content);
if ($imagick->getImageBlob() === false) {
    error_log(print_r($imagick->getLastErrorMessage(), 1));
}

$imagick->setImageBackgroundColor('#d8d8d8');
$imagick->setImageResolution(72, 72);
$imagick->setImageFormat('jpg');
$imagick->setImageCompressionQuality(95);
$imagick->resizeImage($image_width, $image_height, Imagick::FILTER_LANCZOS, 1);

$fileName  = 'converted_image_' . uniqid() . '.jpg';
$file_path = $upload_dir['path'] . '/' . $fileName;

$imagick->writeImage($file_path);

if ($imagick->getImageBlob() === false) {
    error_log(print_r($imagick->getLastErrorMessage(), 1));
}

$imagick->clear();
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
convert -list format покажет, что у IM с поддержкой этого формата.
Про SVG должно выдать три подобные строчки:
MSVG  SVG       rw+   ImageMagick's own SVG internal renderer
SVG   SVG       rw+   Scalable Vector Graphics (XML 2.9.4)
SVGZ  SVG       rw+   Compressed Scalable Vector Graphics (XML 2.9.4)

Отдельно в этих строчках стоит посмотреть на права (rw+) - может оказаться, что в /etc/ImageMagick-6/policy.xml запрещено конвертировать из этого формата ввиду теоретических эксплойтов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы