使用ImageMagick将SVG裁剪和缩放为PNG,避免出现像素化。

7
我有一个包含许多多边形的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
裁剪和缩放操作,然而失败了:
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个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
5

尝试在裁剪之前进行缩放。

然而,使用Inkscape命令行界面更容易实现。

对不起,没有链接,离开一会儿。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,