新着情報
1 -1. 画像表示GUIプログラム(showGUIimage.py)
(1) 画像表示GUIプログラム(showGUIimage.py)
このPythonプログラムは計算機内の任意の場所に格納してある画像ファイルをファイル(F) プルダウンメニュー・開く(O)により対話的に選択し、”Original Image”として枠サイズ(縦500画素, 横500画素)のWindow内の指定場所に、画像サイズ (縦300画素, 横300画素)で縮小表示するサンプルプログラムである。
*****************************************************************************
プログラム showGUIimage.py をコメントを付けて以下に示す。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue Mar 12 10:44:33 2019 @author: PBK-**** """ from tkinter import * from tkinter import filedialog,messagebox from PIL import Image, ImageTk import cv2 class Window(Frame): def __init__(self,master=None):#クラス Windowの #コンスト ラクタ #フレーム Frame.__init__(self,master) #上位クラス #Frame Widgetのコンストラクタ self.master.title('画像表示')#クラス #Window のタイトル self.master.minsize(500,500)#クラス #Window の窓枠サイズ #(横500画素、縦500画素) #メニューバー self.menu_bar = Menu(self.master) self.master.config(menu=self.menu_bar) self.menu_file = Menu(self.menu_bar,tearoff = 0) self.menu_file.add_command(label='開く', command=self.open, underline=3, accelerator = 'Ctrl-O') self.menu_file.add_command(label='保存', command=self.save, underline=5, accelerator = 'Ctrl-S') self.menu_file.add_command(label='終了', command=self.quit, underline=5, accelerator = 'Ctrl-Q') self.menu_bar.add_cascade(label='ファイル(F)', menu=self.menu_file, underline=5) self.image1 = PhotoImage() #ラベル1 self.la = Label(self,image=self.image1,bg="#44aaaa",width=300, height=300) self.la.pack(side=LEFT,padx=100, pady=100) #開く def open(self): global filename global size size=300,300 filename = filedialog.askopenfilename() if filename != "": im = Image.open(filename) im.thumbnail(size, Image.ANTIALIAS)#画像サイズ #を縮小する print(im.mode) if im.mode == '1': # bitmap imageの場合 self.image1 = ImageTk.BitmapImage(im, foreground="white") else: # photo image .png,.jpgなどの # 拡張子の場合 self.image1 = ImageTk.PhotoImage(im) self.la.config(text='Original Image',image=self.image1, width=self.image1.width(), height=self.image1.height(),compound='top') #保存 def save(self): global filename global filename2 cv2.imwrite('result.jpg',filename2) #終了 def quit(self): if messagebox.askokcancel('Closing Confirmation', 'Are you sure you want to close?'): self.master.destroy() if __name__ == '__main__': root = Window() root.pack() root.mainloop()