Как преобразовать холст виджета (текстуру) в формат .png без его сохранения?

#python #opengl #kivy

#python #opengl #kivy

Вопрос:

Я хочу иметь возможность это сделать:

 #Reference widget
my_widget = self.ids.my_widget_kv
#Extract texture or graphics
drawing = my_widget.texture (or something that works)

#TODO convert to drawing .png in binary

#TODO edit in PIL
 

ЗАДАЧА сохранить или прикрепить к электронной почте

На данный момент я получаю my_widget.texture как None, а my_widget.canvas как объект canvas.

Я хочу извлечь виджеты как есть и преобразовать их в .png для прикрепления к электронной почте или редактирования.

 timestr = time.strftime("%Y%m%d_%H%M%S")
self.ids.export_to_png("IMG_{}.png".format(timestr))
 

Этот код сохраняет внешний вид drawing_zone в хранилище. Я не могу отредактировать его на некоторых промежуточных этапах.

Ответ №1:

Если вы просто откроете и прочитаете файл PNG, вы получите байты, которыми затем сможете манипулировать по своему вкусу.

 canvas_png = open("IMG.png","r b").read()
canvas_data = (canvas_png.getvalue())

print(canvas_data)
 

Вы должны увидеть «двоичный файл», который вам нужен, сохраненный в этой переменной.

Комментарии:

1. Спасибо за ваш ответ. Я хотел бы пропустить часть сохранения и преобразовать ее в .png в памяти, чтобы использовать ее немедленно. export_to_png вызывает некоторые методы виджета, которые выдают ошибки, если я вызываю их напрямую.

2. Существует способ сохранить его в памяти (я думаю, что это метод python). Я посмотрю на вас, когда у меня будет возможность. Есть причина, по которой вы не можете его сохранить? Он должен храниться в переменной (в любом случае, в памяти)