Я использую ImageMagick 6.7.4-0 и Imagick 3.0.1.
У меня есть все делегаты, необходимые для SVG (вывод convert -list configure | grep DELEGATES
показывает bzlib djvu fontconfig freetype gvc jpeg jng jp2 lcms lqr openexr png rsvg tiff x11 xml wmf zlib
).
Вот пример кода PHP для преобразования очень простого SVG в PNG:
$file = 'baseball.svg';
$im = new Imagick();
$im->readImage($file);
$im->setImageFormat("png32");
header("Content-Type: image/png");
print $im->getImageBlob();
Я получаю ответ 503 от сервера;PHP ничего не сообщает и ничего не регистрирует.У меня включены все ошибки php, включены ошибки отображения, включены ошибки журнала и т. Д. Я могу конвертировать из .png в .jpg и все это очень хорошо.
И важное замечание - я смог работатьс SVG просто отлично в течение нескольких месяцев на этом сервере, но мне пришлось обновить ImageMagick с 6.6.x до 6.7.x, чтобы устранить некоторые ошибки, связанные с искажением текста.Сначала я попробовал последнюю версию (6.7.4-10), но не смог получить любое преобразование в работу, поэтому я понизил до 6.7.4-0 и все преобразования за исключением SVG опять работа.Я просто не могу разобраться с этим!
Редактировать: Работает на Ubuntu 10.04.Сервер Litespeed 4.0.10.
Редактировать 2: Я только что обнаружил, что этот код - при запуске из командной строки (php test.php
) -на самом деле прекрасно создает .png из .svg, даже если он сообщает «Ошибка сегментации».Запуск этого скрипта из браузера не приводит ни к какому файлу.
$file = 'baseball.svg';
$im = new Imagick();
$im->setBackgroundColor(new ImagickPixel('transparent'));
$im->readImage($file);
$im->setImageFormat("png32");
$fp = fopen(time() . '.png', 'w');
fwrite($fp, $im->getimageblob());
fclose($fp);