実現したいこと
PySimpleGUIを使用し、様々なサイズの入力画像を最終的に(225,400)の大きさにしてGUIに映し出すアプリを作りたいと考えています。
1つのプログラムで入力したJPG画像を9:16になるように切り取り、任意のサイズにリサイズしてGUIに映し出したいと考えています。
参考にしたページは以下になります。
https://3pysci.com/pysimplegui-10/
GUIのポップアップに表示されるエラー文
ERROR Your Window has an Image Element with a problem File test. py line 52 in <module> event, values = window. read) The traceback will show you the Window with the problem layout Look in this Window's layout for an Image element that has a key of 0 The error occuring is: encountered an unsupported criticial chunk type eXIP*
該当のソースコード
python
1import PySimpleGUI as sg 2import io 3from PIL import Image, ImageTk 4 5 6img = Image.open("image.jpg")7#サイズ調整8x, y= img.size 9print('width: ', x)10print('height:', y)11 12if y >= x: #縦長の場合13 height = (16/9) * x 14 a = (y - height) // 2 #端から切り取りたい場所までの距離 15 lower = a + height 16 upper = a 17 18 if y <= lower:19 x = (9/16)*y 20 21 im_trim = img.crop((0, 0, x, y)) 22 23 elif y > lower:24 im_trim = img.crop((0, upper ,x ,lower)) 25 26elif x > y: #横長27 28 width = (9/16)*y 29 a = (x - width) // 2 #端から切り取りたい場所までの距離 30 left = a 31 right = a + width 32 33 im_trim = img.crop((left, 0, right ,y)) 34 print(im_trim.size)35 36img=im_trim.resize((225,400)) # (X, Y)37#status_text = img.size38#print(img.size)39png_bio = io.BytesIO()40img.show()41img.save(png_bio, format="PNG")42 43del img 44 45png_data = png_bio.getvalue()46 47layout = [[sg.Image(png_data)]]48 49window = sg.Window("",layout, size=(500, 500))50 51while True:52 event,values = window.read()53 if event == sg.WIN_CLOSED:54 break55 56window.close()
事前にリサイズしたものを参照すると問題なく映し出すことができました。
何が異なるのかいろいろ見た結果、画像の容量が大きいとはじかれるのかなとは考えています(約300KB以上?)。
ただ、これを解消するためにもリサイズなどを行うようにしているはず、、、と思ってしまっているためか解決策がわかりません。
自分の力不足により、お時間を頂戴し恐縮ですが、ご教授お願いいたします。
0 コメント