Почему ImageMagick svg в png отдает белый холст?

Есть svg файл на 5Мб, внутри 256x256 rect с заливкой из текстуры, лежат в папке Textures, пути к ним указаны как Textures/testure_name.png

Если открывать файл в браузере, то все отображается нормально. Но конвертировать в png не получается.
команда из каталога с самим фалом и папкой текстур convert file.svg file.png в centos выдает белый лист, аналогично при конвертировании внутри php скрипта, который генерирует эту svg.

Но при этом на Win8 эта же команда отлично создает png картинку.
  • Вопрос задан
  • 3296 просмотров
Пригласить эксперта
Ответы на вопрос 2
@RPG
В CentOS очень старая версия ImageMagick, не исключено, что проблемы именно из-за этого. Браузер - не показатель, так как движок SVG у него свой. В Win8 наверняка версия новее - сравните версии программ.

Выхода два.
* Найти RPM-ку с обновлённой версией ImageMagick под CentOS или скомпилировать последнюю версию вручную. С виртуальным хостингом, правда, не сработает - вам просто не дадут обновить софт на сервере.
* Задействовать другую программу, поддерживающую SVG, например, Inkscape.

P. S. Ну и SVG на 5 мегабайт - это перебор. Если у вас виртуальный/выделенный сервер - может быть такое, что ему просто не хватило памяти. Понаблюдайте за процессом конвертации в top, если возможно.
Ответ написан
SpekToR_ru
@SpekToR_ru
Version: ImageMagick 6.9.1-4 Q16 x86_64 2015-06-02
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib jbig jng jpeg lcms ltdl lzma openexr pangocairo png ps rsvg tiff webp wmf x xml zlib

Название: php56-php-pecl-imagick
Архитектура: x86_64
Версия: 3.2.0
Выпуск: 0.9.RC1.el7.remi

Версия librsvg2:
Установленные пакеты
Название: librsvg2
Архитектура: x86_64
Версия: 2.39.0
Выпуск: 1.el7

Работает если SVG и все его ресурсы лежат в одной папке. Путь картинок может быть как абсолютным так и относительным. Соответственно svg необходимо открывать как файл, т.е. через $im->readImageBlob($svg->saveXML() работать не будет.
Ответ написан
Ваш ответ на вопрос

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

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