imagemagick — PHP конвертировать SVG в Jpg недостающие элементы

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

convert -density 250 source.svg target.jpg

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

Вход SVG введите описание изображения здесь

Выходной JPG

введите описание изображения здесь

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

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

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

0

Решение

Какой рендерер 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

введите описание изображения здесь

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

введите описание изображения здесь

convert -density 250 source.svg target_inkscape.jpg

введите описание изображения здесь

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

1

Другие решения

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

0

По вопросам рекламы [email protected]