2024-04-27 21:32:39 发布
网友
如何在Python中将svg转换为png?我正在将svg存储在StringIO的实例中。我应该使用pyCairo图书馆吗?我该如何编写代码?
svg
png
StringIO
以下是我使用cairosvg所做的:
from cairosvg import svg2png svg_code = """ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="10"/> <line x1="12" y1="8" x2="12" y2="12"/> <line x1="12" y1="16" x2="12" y2="16"/> </svg> """ svg2png(bytestring=svg_code,write_to='output.png')
它就像一个符咒!
查看更多信息:cairosvg document
安装Inkscape并将其作为命令行调用:
${INKSCAPE_PATH} -z -f ${source_svg} -w ${width} -j -e ${dest_png}
也可以仅使用参数-j捕捉特定的矩形区域,例如坐标“0:125:451:217”
-j
${INKSCAPE_PATH} -z -f ${source_svg} -w ${width} -j -a ${coordinates} -e ${dest_png}
如果只想在SVG文件中显示一个对象,可以使用SVG中设置的对象id指定参数-i。它隐藏了一切。
-i
${INKSCAPE_PATH} -z -f ${source_svg} -w ${width} -i ${object} -j -a ${coordinates} -e ${dest_png}
答案是“pyrsvg”——一个用于librsvg的Python绑定。
有一个Ubuntupython-rsvg package提供它。搜索Google的名字很糟糕,因为它的源代码似乎包含在“gnome python desktop”gnome project GIT存储库中。
我制作了一个极简主义的“hello world”,它将SVG呈现给cairo 取出并写入磁盘:
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。上面的代码片段列表仍然可以正常工作。
gnome-python2-rsvg
以下是我使用cairosvg所做的:
它就像一个符咒!
查看更多信息:cairosvg document
安装Inkscape并将其作为命令行调用:
也可以仅使用参数
-j
捕捉特定的矩形区域,例如坐标“0:125:451:217”如果只想在SVG文件中显示一个对象,可以使用SVG中设置的对象id指定参数
-i
。它隐藏了一切。答案是“pyrsvg”——一个用于librsvg的Python绑定。
有一个Ubuntupython-rsvg package提供它。搜索Google的名字很糟糕,因为它的源代码似乎包含在“gnome python desktop”gnome project GIT存储库中。
我制作了一个极简主义的“hello world”,它将SVG呈现给cairo 取出并写入磁盘:
更新:截至2014年,Fedora Linux发行版所需的软件包是:
gnome-python2-rsvg
。上面的代码片段列表仍然可以正常工作。相关问题 更多 >
编程相关推荐