6

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

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。

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

4

1 回答 1

4

如果您的目标是从 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)
于 2019-06-08T10:51:15.167 回答