Python SVG конвертер создает пустой файл - PullRequest
7 голосов
/ 05 июня 2019

У меня есть некоторый код ниже, который должен конвертировать изображение 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")

Я использую Python 3.6 в Windows 10.

Я не могу понять, почему это не отображает правильную картинку. Любая помощь будет принята с благодарностью.

1 Ответ

5 голосов
/ 08 июня 2019

Если ваша цель - конвертировать из 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)
...