Каирская функция get_data (), эквивалентная для Python 3 - PullRequest
0 голосов
/ 03 июня 2019

Я использую cairo с python 3, но сталкиваюсь с ошибкой, когда функция get_data() возвращает объект обзора памяти.

В Python 2 функция get_data () возвращает объект буфера Python для данных ImageSurface, для прямой проверки или модификации.

Мой скрипт ниже должен взять любое изображение SVG и отобразить его в кадре tkinter. В Python 3 функция getdata(), похоже, не работает с Image.frombuffer()

from rsvg import *
import tkinter as tk
t=tk.Tk()
frame=tk.Frame(t)
def svgPhotoImage(self,file_path_name):
        from PIL import Image, ImageTk
        import cairo
        svg = rsvghandler.Handle(file=file_path_name)
        width, height = svg.get_dimension_data()[:2]
        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(width), int(height))
        context = cairo.Context(surface)
        svg.render_cairo(context)
        tk_image=ImageTk.PhotoImage('RGBA')
        image=Image.frombuffer('RGBA',(width,height),surface.get_data(),'raw','BGRA',0,1)
        tk_image.paste(image)
        return(tk_image)
tk_image=svgPhotoImage(frame, 'example.svg')
frame.configure(image=tk_image)

После множества поисков я все еще не могу найти эквивалент для Python 3. Вклад будет очень признателен.

...