为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中将SVG转换为PNG

在Python中将SVG转换为PNG

桃花长相依 2019-10-25 11:03:20
如何转换的svg到png,在Python?我将储存svg在的实例中StringIO。我应该使用pyCairo库吗?如何编写该代码?
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

答案是“ pyrsvg ” -一个Python绑定的librsvg。


有一个提供它的Ubuntu python-rsvg软件包。在Google上搜索其名称很不方便,因为其源代码似乎包含在“ gnome-python-desktop” Gnome项目GIT存储库中。


我制作了一个极简的“ hello world”,将SVG渲染到开罗表面并将其写入磁盘:


import cairo

import rsvg


img = cairo.ImageSurface(cairo.FORMAT_ARGB32, 640,480)


ctx = cairo.Context(img)


## handle = rsvg.Handle(<svg filename>)

# or, for in memory SVG data:

handle= rsvg.Handle(None, str(<svg data>))


handle.render_cairo(ctx)


img.write_to_png("svg.png")

更新:从2014年开始,Fedora Linux发行版所需的软件包是:gnome-python2-rsvg。上面的摘录清单仍按原样工作。


查看完整回答
反对 回复 2019-10-25
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

安装Inkscape并将其作为命令行调用:


${INKSCAPE_PATH} -z -f ${source_svg} -w ${width} -j -e ${dest_png}

您也可以仅使用参数捕捉特定的矩形区域-j,例如,坐标“ 0:125:451:217”


${INKSCAPE_PATH} -z -f ${source_svg} -w ${width} -j -a ${coordinates} -e ${dest_png}

如果只想在SVG文件中显示一个对象,则可以使用-i已在SVG中设置的对象ID 来指定参数。它隐藏了其他所有内容。


${INKSCAPE_PATH} -z -f ${source_svg} -w ${width} -i ${object} -j -a ${coordinates} -e ${dest_png}


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 2190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信