Кадрирование и масштабирование SVG в PNG с использованием ImageMagick без пикселизации - PullRequest
6 голосов
/ 16 октября 2011

У меня есть SVG со многими полигонами:

https://github.com/barrycarter/bcapps/blob/master/sample-data/current-temps.svg

, который выглядит примерно так:

enter image description here

Обрезка этого и преобразование в PNG работает нормально:

convert -crop 100x100+200+150 current-temps.svg /tmp/exhb2.png

enter image description here

Однако обрезка и масштабирование завершается неудачно:

convert -crop 100x100+200+150 -scale 1000x750 current-temps.svg /tmp/exhb3.png

enter image description here

Как заставить ImageMagick «увеличить» SVG перед кадрированием?

(я понимаю, что ImageMagick может только читать, но не записывать формат SVG, но он все равно должен выполнять то, что я хочу?)

РЕДАКТИРОВАТЬ / РЕШЕНО:

Спасибо, robermorales.

inkscape -z -e out4.png -w 1000 -h 1000 -a 200:200:400:400 current-temps.svg 

(например) работал как шарм.

Я также понял, что копирование SVG, настройка строки преобразования:

<g transform="scale(3,3) rotate(-90) translate(-90,180)"> 

и затем преобразование в PNG - это еще одно решение.

Ответы [ 3 ]

6 голосов
/ 16 октября 2011

Попробуйте сделать шкалу перед кадрированием.

Однако сделать это с помощью inkscape cli проще.

Извините за отсутствие ссылок, afk

1 голос
/ 22 июня 2017

Не обрезать SVG в PNG.Вы можете использовать viewBox, чтобы переопределить область обрезки, а затем преобразовать SVG в PNG в максимально возможном разрешении.Проверьте этот пост https://www.sarasoueidan.com/blog/svg-coordinate-systems/ объясните, что такое viewBox, и вы поймете мою идею.

0 голосов
/ 22 июня 2017

Правильный синтаксис ImageMagick здесь для чтения входных данных, затем обрезать, а затем изменить размер. См. http://www.imagemagick.org/Usage/basics/#why Хотя это вряд ли проблема. Проблема в том, что -scale будет реплицировать пиксели и, таким образом, делать их блокированными. Вам следует заменить -scale на -resize. Это будет более плавным, но размытым для величины увеличения, которую вы запрашиваете. Попробуйте эту команду:

convert current-temps.svg -crop 100x100+200+150 -resize 1000x750 exhb3.png
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...