如何在Python语言中将svg
转换为png
?我将svg
存储在StringIO
的一个实例中。我应该使用pyCairo库吗?我该如何编写代码呢?
发布于 2012-11-10 16:20:44
下面是我使用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
发布于 2012-04-13 03:01:26
安装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文件中显示一个对象,可以使用在SVG中设置的对象id指定参数-i
。它隐藏了其他的一切。
${INKSCAPE_PATH} -z -f ${source_svg} -w ${width} -i ${object} -j -a ${coordinates} -e ${dest_png}
发布于 2014-04-16 04:05:13
我在这里找到的另一个解决方案是How to render a scaled SVG to a QImage?
from PySide.QtSvg import *
from PySide.QtGui import *
def convertSvgToPng(svgFilepath,pngFilepath,width):
r=QSvgRenderer(svgFilepath)
height=r.defaultSize().height()*width/r.defaultSize().width()
i=QImage(width,height,QImage.Format_ARGB32)
p=QPainter(i)
r.render(p)
i.save(pngFilepath)
p.end()
在Windows中,PySide很容易通过二进制包安装(我将它用于其他用途,所以对我来说很容易)。
但是,在从Wikimedia转换国家标志时,我注意到一些问题,因此可能不是最健壮的svg解析器/渲染器。
https://stackoverflow.com/questions/6589358
复制相似问题