相关文章推荐
打酱油的香槟  ·  SQLite 教程 | 菜鸟教程·  1 年前    · 
风流的板栗  ·  使用 Maven/Jenkins/Git ...·  1 年前    · 

Python SVG转换器创建空文件

6 人关注

我有一些代码,应该是将SVG图像转换为PNG。它的运行没有错误,但却创建了一个 PNG文件是空白的 而不是一个与原始SVG相同的图像。我确实发现这不是cairo的错误,而是与rsvg有关的错误,我得到的是 here .

import cairo
import rsvg
img = cairo.ImageSurface(cairo.FORMAT_ARGB32, 640,480)
ctx = cairo.Context(img)
handle= rsvghandler.Handle('example.svg')
handle.render_cairo(ctx)
img.write_to_png("svg.png")

我在Windows 10上使用Python 3.6。

我怎么也想不明白为什么它不能显示正确的图片。如果有任何帮助,我将不胜感激。

2 个评论
我试图重现你的问题,但我似乎无法安装 cairo 。当运行 pip install cairo 时,我得到 Could not find a version that satisfies the requirement cairo (from versions: ) 。当运行 pip install pycairo 时,我得到错误 Package cairo was not found in the pkg-config search path.Perhaps you should add the directory containing 'cairo.pc' to the PKG_CONFIG_PATH environment variable 。你是怎么得到它的?
我通过下载Pycairo whl文件安装了cairo,地址是 lfd.uci.edu/~gohlke/pythonlibs 使用 pip install [wheelname] 来安装它。我不记得哪一个对我有用,但我在能够正确安装它之前不得不尝试了几个。
python
python-3.x
type-conversion
cairo
rsvg
Andoo
Andoo
发布于 2019-06-05
1 个回答
Gonçalo Peres
Gonçalo Peres
发布于 2019-06-08
已采纳
0 人赞同

如果你的目标是将SVG转换为PNG,我建议使用 墙壁 ,如下面的脚本。

from wand.api import library
import wand.color
import wand.image
with wand.image.Image() as image:
    with wand.color.Color('transparent') as background_color:
        library.MagickSetBackgroundColor(image.wand, 
                                         background_color.resource) 
    image.read(blob=NAMEOFTHEFILE.read(), format="svg")