Я делаю первые шаги с kivy и пытаюсь построить функции, введенные в TextInput через matplotlib или pygal. Оба работают нормально, пока я сохраняю изображения на диске. Чтобы ускорить работу программы, я не хочу, чтобы изображение записывалось и читалось с диска. Я нашел следующее решение по mornie.org:Почему и кем этот метод называется в kivy
class MemoryImage(Image):
"""Display an image already loaded in memory."""
memory_data = ObjectProperty(None)
def __init__(self, memory_data, **kwargs):
super(MemoryImage, self).__init__(**kwargs)
self.memory_data = memory_data
def on_memory_data(self, *args):
"""Load image from memory."""
data = StringIO.StringIO(self.memory_data)
with self.canvas:
self.texture = ImageLoaderPygame(data).texture
случайно изменяющимися словами, пока он не работает под Python3 я нашел это решение:
class MemoryImage(Image):
"""Quelle: https://mornie.org/blog/2013/11/06/how-load-image-memory-kivy/"""
memory_data = ObjectProperty(None)
def __init__(self,memory_data,**kwargs):
"""Display an image already loaded in memory."""
super(MemoryImage, self).__init__(**kwargs)
self.memory_data = memory_data
def on_memory_data(self, *args):
"""Load image from memory."""
data = BytesIO(self.memory_data)
with self.canvas:
self.texture = ImageLoaderPygame(filename="test.png",rawdata=data, ext="png", inline=True).texture
Это решение хорошо работает до тех пор, пока я не пытаюсь обновить изображение. К сожалению, это мое намерение. Поэтому я пытаюсь понять этот класс. Но я не могу - и на фронте я являюсь необработанным рекрутом в ООП - нахожу единственную точку, где вызывается этот метод on_memory_data. Сначала я обыскал родителей этого класса, затем я grep kivy и, наконец, всю папку all/usr для файлов python, содержащих «on_memory», но ничего не происходит.
Я был бы признателен, если бы кто-нибудь мог дать мне подсказку, почему этот метод называется!
Каков размер изображения? – Veltro
640x480! (некоторые дополнительные символы для отправки) – hinerk