Почему мои настройки ImageMagick / Imagick всегда дают сбой при чтении из SVG? - PullRequest
0 голосов
/ 27 января 2012

Я использую 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);

Ответы [ 2 ]

1 голос
/ 27 января 2012

Скорее всего, у вас не установлен пакет RSVG binary .

0 голосов
/ 28 января 2012

Я пробовал ImageMagick 6.7.x вместе с каждым комбо версий Imagick, не повезло (всегда segfaults, но PHP командной строки способен создать файл по крайней мере)

Я пробовал ImageMagick 6.6.x вместе со всеми комбо версий Imagick, но все же не повезло (всегда segfaults, командная строка PHP не может ничего создать).

Я попытался добавить все необходимые и предлагаемые зависимости для ImageMagick, но все же не повезло.

Я удалил Imagick, удалил ImageMagick, а затем запустил apt-get install libmagickcore3-extra imagemagick --fix-missing. Затем побежал pecl install imagick-3.0.1.

Вуаля, все работает как положено , , но вернулся туда, где я был до того, как попытался обновить ImageMagick . Я не могу получить самоскомпилированную версию ImageMagick / Imagick, полностью работающую с SVG в Ubuntu.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...