Серверная сторона SVG к PNG (или некоторый другой формат изображения) в Python

В настоящее время я использую rsvg для загрузки svg (из строки, не из файла) и тяну в Каир. Кто-либо знает лучший путь? Я использую PIL в другом месте в моем приложении, но я не знаю о способе сделать это с PIL.

11
задан colinmarc 28 May 2010 в 20:51
поделиться

2 ответа

Вот что у меня сейчас:

import cairo
import rsvg

def convert(data, ofile, maxwidth=0, maxheight=0):

    svg = rsvg.Handle(data=data)

    x = width = svg.props.width
    y = height = svg.props.height
    print "actual dims are " + str((width, height))
    print "converting to " + str((maxwidth, maxheight))

    yscale = xscale = 1

    if (maxheight != 0 and width > maxwidth) or (maxheight != 0 and height > maxheight):
        x = maxwidth
        y = float(maxwidth)/float(width) * height
        print "first resize: " + str((x, y))
        if y > maxheight:
            y = maxheight
            x = float(maxheight)/float(height) * width
            print "second resize: " + str((x, y))
        xscale = float(x)/svg.props.width
        yscale = float(y)/svg.props.height

    surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, x, y)
    context = cairo.Context(surface)
    context.scale(xscale, yscale)
    svg.render_cairo(context)
    surface.write_to_png(ofile)
12
ответ дан 3 December 2019 в 06:20
поделиться

Как насчет imagemagic? - http://www.imagemagick.org/script/magick-vector-graphics.php Он может читать / писать из / в стандартный ввод / вывод, поэтому вы можете интегрировать его в свое приложение, даже если вы этого не сделаете. не хочу использовать файлы

3
ответ дан 3 December 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: