Преобразование изображения Pythonmagick в изображение tkinter

Вкратце, я хотел бы использовать Image создано pythonmagick в tkinter приложение.

Короче говоря, моя цель - отображать анимированные GIF-файлы в tkinter. Наименее дружественным для пользователя способом было бы заставить конечного пользователя генерировать серию изображений из их GIF/AVI/ и т. Д. любым способом, который им нравится, затем сообщите приложению, где находятся изображения, чтобы оно могло их просматривать after,

Чтобы добавить некоторое удобство, исполняемый файл ImageMagick командной строки с convert может быть включено в приложение и вызываться автоматически, когда пользователь выбирает GIF. Тем не менее, это все равно оставило бы кучу файлов изображений, лежащих вокруг жесткого диска пользователя, и приложение должно было бы быть связано с исполняемым файлом ImageMagick для каждой ОС, что могло бы вызвать проблемы совместимости в будущем.

В идеале пользовательский GIF должен быть преобразован в серию изображений полностью в памяти, а затем превращен в Imageсовместим с tkinter или же pillow (мое приложение использует pillow принимать различные форматы вместо только GIF и PGM/PPM), а затем анимированные.

Я думаю, это где pythonmagick может работать немного магии.

Обучение основам использования pythonmagick это одно, но я не знаю, где еще искать, чтобы узнать, как преобразовать pythonmagickImage в tkinter один.

Вся документация для pythonmagick кажется, этот текстовый файл. Он содержит пример для преобразования pythonmagickImage к PILImage, но это не работает:

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)

pythonmagickImageс не содержат 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,

0 ответов

Другие вопросы по тегам