OpenCV の HighGUI で画像を表示させると、拡大縮小ボタンも表示された。
折角なので拡大ボタンを押して見ると、再描画まで1秒くらいかかった。ボタンクリックの読み取り間隔が遅いのだろうか・・・。
他の方法として Pillow でも画像表示させてみた。私の環境では、ImageMagick で画像が表示された。
ちょっと予想外だったし、そこから自由に作れそうにない。
PySimpleGUI を知って、サンプルを切り貼りして作ってみた。これなら使えそう。
import sys
import io
import PySimpleGUI as sg
from PIL import Image
if len(sys.argv) == 1:
fname = sg.popup_get_file('Document Browser', 'Document file to open',
no_window=True,
file_types=(
("jpeg", "*.jpg"),
("jpeg", "*.jpeg"),
("png", "*.png"),
("tiff", "*.tiff"),
)
)
else:
fname = sys.argv[1]
if not fname:
sg.popup("Cancelling:", "No filename supplied")
raise SystemExit("Cancelled: no filename supplied")
def get_img_data(f, maxsize=(1200, 850), first=False):
"""Generate image data using PIL
"""
img = Image.open(f)
img.thumbnail(maxsize)
if first:
bio = io.BytesIO()
img.save(bio, format="PNG")
del img
return bio.getvalue()
return ImageTk.PhotoImage(img)
image_elem = sg.Image(data = get_img_data(fname, first=True))
layout = [[image_elem]]
window = sg.Window('Image Browser', layout, return_keyboard_events=True,
location=(0, 0), use_default_focus=False)
while True:
event, values = window.read()
print(event, values)
if event == sg.WIN_CLOSED:
break
window.close()