Python SVG转换器创建空文件

时间:2019-06-05 15:25:07

标签: python python-3.x python-3.6 cairo rsvg

我下面有一些代码可以将SVG图像转换为PNG。它可以正常运行,但是会创建一个空白的 PNG文件,而不是与原始SVG具有相同图像的PNG文件。我确实发现这不是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。

我无法终生弄清楚为什么它无法显示正确的图片。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:5)

如果您的目标是从SVG转换为PNG,我建议使用Wand,如以下脚本所示:

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")
    png_image = image.make_blob("png32")

with open(NAMEOFTHENEWFILE, "wb") as out:
    out.write(png_image)