使用ImageMagick裁剪并缩放SVG到PNG,无像素化

时间:2011-10-15 20:26:14

标签: imagemagick

我有一个包含许多多边形的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 个答案:

答案 0 :(得分:6)

尝试在裁剪前进行缩放。

但是,使用inkscape cli更容易。

很抱歉没有链接,afk

答案 1 :(得分:1)

不要将SVG裁剪为PNG。 您可以使用viewBox重新定义裁剪区域,然后尽可能将该SVG转换为最高解决方案中的PNG。 查看这篇文章https://www.sarasoueidan.com/blog/svg-coordinate-systems/解释什么是viewBox,你会明白我的想法。

答案 2 :(得分:0)

这里适当的ImageMagick语法是读取输入,然后裁剪,然后调整大小。请参阅http://www.imagemagick.org/Usage/basics/#why虽然这不太可能是问题所在。问题是-scale会复制像素,因此使其变得模糊。你应该用-resize替换-scale。这将更平滑,但您要求的放大倍数模糊。试试这个命令:

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