我下面有一些代码可以将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。
我无法终生弄清楚为什么它无法显示正确的图片。任何帮助将不胜感激。
答案 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)