Преобразование изображения Pythonmagick в изображение tkinter
Вкратце, я хотел бы использовать Image
создано pythonmagick
в tkinter
приложение.
Короче говоря, моя цель - отображать анимированные GIF-файлы в tkinter. Наименее дружественным для пользователя способом было бы заставить конечного пользователя генерировать серию изображений из их GIF/AVI/ и т. Д. любым способом, который им нравится, затем сообщите приложению, где находятся изображения, чтобы оно могло их просматривать after
,
Чтобы добавить некоторое удобство, исполняемый файл ImageMagick командной строки с convert
может быть включено в приложение и вызываться автоматически, когда пользователь выбирает GIF. Тем не менее, это все равно оставило бы кучу файлов изображений, лежащих вокруг жесткого диска пользователя, и приложение должно было бы быть связано с исполняемым файлом ImageMagick для каждой ОС, что могло бы вызвать проблемы совместимости в будущем.
В идеале пользовательский GIF должен быть преобразован в серию изображений полностью в памяти, а затем превращен в Image
совместим с tkinter
или же pillow
(мое приложение использует pillow
принимать различные форматы вместо только GIF и PGM/PPM), а затем анимированные.
Я думаю, это где pythonmagick
может работать немного магии.
Обучение основам использования pythonmagick
это одно, но я не знаю, где еще искать, чтобы узнать, как преобразовать pythonmagick
Image
в tkinter
один.
Вся документация для pythonmagick
кажется, этот текстовый файл. Он содержит пример для преобразования pythonmagick
Image
к PIL
Image
, но это не работает:
img = PythonMagick.Image(magickimage) # make copy
img.depth = 8 # this takes 0.04 sec. for 640x480 image
img.magick = "RGB"
data = img.data
w, h = img.columns(), img.rows()
# convert string array to an RGB Pil image
pilimage = Image.fromstring('RGB', (w, h), data)
pythonmagick
Image
с не содержат data
приписывать. Я пытался возиться с pythonmagick
"s Blob
немного, но я не знаю, что он делает или как это работает. Я попытался запустить код выше, заменив img.data
с blob.data
что я ранее сохранил (исходя из этого вопроса), но это дало мне следующее:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
Я также попытался создать изображение из байтов вместо строки (исходя из этого вопроса) с im = Image.frombytes('I', (400, 145), blob.data)
, но это тоже не сработало.
Может быть, это что-то простое, но у меня такое чувство, что я далеко. Как только это прояснится, я посмотрю на разделение GIF с pythonmagick
,