2017-08-04 10 views
0

私はPythonでTkinterを使用してイメージ処理を学ぶGUIを開発しています。私の問題は、私はできなかったですpython tkinterでサイズ変更されたイメージを表示するには

from Tkinter import * 
import PIL 
class Window:  
    def __init__(self, master): 
     master.title("Image Processing test") 
     master.minsize(800, 400) 

     from PIL import Image 
     im = Image.open("IMG_0562.png") 
     size = 240, 240 
     im.thumbnail(size) 
     p = im.tobytes() 

     # photo = PhotoImage(file="IMG_0562.gif") 
     # photo = BitmapImage(data=p) 
     w = Label(root, image=photo, width=240, height=240).grid(row=20, column=2) 
     self.photo = photo 


root = Tk() 

window = Window(root) 

root.mainloop() 

=>リサイズ/サムネイル画像(240×240)=>プレビュー画像GUIのプロセスフローは

ロード画像(... | | PNG、JPG)のようになりLabelで使用するには、適切な形式で画像を取得してください。 LabelPhotoImageBitmapImageしか受け付けていません。 PhotoImageは、pngまたはjpgファイルをサポートしていません。だから私はからPILを使ってカラー画像を読み込んでサイズを変更しました。私はImage.tobitmap()Image.tobytes()を試しましたが、この場合は役に立ちません。

答えて

0

は、使用してメモリ内の画像を保存することで、問題を解決しio.BytesIO()

from Tkinter import * 
from PIL import Image 
import io 

class Window:  
    def __init__(self, master): 
     master.title("Image Processing test") 
     master.minsize(800, 400) 

     im = Image.open("IMG_0562.png") 
     size = 240, 240 
     im.thumbnail(size) 
     b = io.BytesIO() 
     im.save(b, 'gif') 
     p = b.getvalue() 
     photo = BitmapImage(data=p) 
     w = Label(root, image=photo, width=240, height=240).grid(row=20, column=2) 
     self.photo = photo 

root = Tk()  
window = Window(root) 
root.mainloop() 
関連する問題