PHP конвертировать SVG в Jpg недостающие элементы - PullRequest
0 голосов
/ 11 сентября 2018

Я использую php imagemagic для конвертации svg в jpg и использую приведенную ниже команду для конвертации.

convert -density 250 source.svg target.jpg

Я могу конвертироватьSVG в JPG успешно, но некоторые элементы в SVG отсутствуют.Пожалуйста, проверьте ниже пример

Вход SVG enter image description here

Выход JPG

enter image description here

Здесь хорошо видно, что светло-серые оттенки по бокам заменены на белый цвет.Может кто-нибудь сообщить мне, как это исправить.

К вашему сведению, вот ссылка на скачивание актуального SVG

https://drive.google.com/file/d/1vC5yaXds7ogcsTWjaDzkXZZFyKzLCsgf/view?usp=sharing

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Наконец-то я нашел обходной путь для этого.Я преобразовал SVG в изображение холста (формат base64) через javascript и через php я преобразовал данные base64 в изображение jpg.

0 голосов
/ 11 сентября 2018

Какой рендерер SVG вы используете?Это может быть внутренний Imagemagick MSVG / XML, делегат RSVG или Inkscape (в порядке увеличения функциональности).Вы можете узнать это, добавив -verbose в вашу командную строку.

convert -verbose -density 250 source.svg target.jpg


Я использовал Imagemagick 6.9.10.11 Q16 Mac OSX с его внутренним рендерером MSVG / XML, RSVG 2.42.2_2 и Inkscape 0.92.3_4.Все три дали разные результаты.RSVG был худшим.Inkscape был лучшим.Вот мои результаты с использованием вашей команды.

convert -density 250 MSVG:source.svg target_msvg.jpg


enter image description here

convert -density 250 RSVG:source.svg target_rsvg.jpg


enter image description here

convert -density 250 source.svg target_inkscape.jpg


enter image description here

Обычно RSVG работает лучше, чем MSVG Imagemagick.Но здесь, похоже, хуже.Это может быть связано с тем, как я изменил свой файл Delegates.xml, чтобы иметь возможность запускать RSVG, пока установлен Inkscape.Также рендерер MSVG был улучшен за последние несколько выпусков.Поэтому более старая версия может не дать такого хорошего результата.

...