首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中将SVG转换为PNG

在Python中将SVG转换为PNG
EN

Stack Overflow用户
提问于 2011-07-06 05:59:55
回答 10查看 134K关注 0票数 127

如何在Python语言中将svg转换为png?我将svg存储在StringIO的一个实例中。我应该使用pyCairo库吗?我该如何编写代码呢?

EN

回答 10

Stack Overflow用户

发布于 2012-11-10 16:20:44

下面是我使用cairosvg所做的工作

代码语言:javascript
复制
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

票数 112
EN

Stack Overflow用户

发布于 2012-04-13 03:01:26

安装Inkscape并将其称为命令行:

代码语言:javascript
复制
${INKSCAPE_PATH} -z -f ${source_svg} -w ${width} -j -e ${dest_png}

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

代码语言:javascript
复制
${INKSCAPE_PATH} -z -f ${source_svg} -w ${width} -j -a ${coordinates} -e ${dest_png}

如果只想在SVG文件中显示一个对象,可以使用在SVG中设置的对象id指定参数-i。它隐藏了其他的一切。

代码语言:javascript
复制
${INKSCAPE_PATH} -z -f ${source_svg} -w ${width} -i ${object} -j -a ${coordinates} -e ${dest_png}
票数 44
EN

Stack Overflow用户

发布于 2014-04-16 04:05:13

我在这里找到的另一个解决方案是How to render a scaled SVG to a QImage?

代码语言:javascript
复制
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解析器/渲染器。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6589358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档