新着情報
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()
