Last Updated or created 2023-10-05
Got a question, could I make the video viewer also for images.
Well, that is a great idea, i’ve got some panoramic photos myself.
A little modification, some added code, but here is a working example.
CODE
imageview.py filename
Use esc to stop, and enter for next image.
(Has better full screen experience than my movie player. (no padding) have to revisit that one )
Nice to have?
- Back button?
- Comments, renaming thumb
from pathlib import Path from sys import platform as PLATFORM import os import re import PySimpleGUI as sg from PIL import Image, ImageEnhance, ImageTk, ImageOps, ImageFilter from xml.etree import ElementTree as ET import sys from sys import platform as PLATFORM abspath = os.path.abspath(__file__) dname = os.path.dirname(abspath) os.chdir(dname) try: image=sys.argv[1] except: print(sys.argv[0] + " filename") exit() def nextFile(currentfile,dir): newfile="" dirpath = os.path.dirname(dir) fileList = [] for f in os.listdir(dirpath): #fpath = os.path.join(dirpath, f) fpath = f if os.path.isfile(fpath) and f.endswith(('.jpg','.JPG')): fileList.append(fpath) fileList.sort() for i in range(len(fileList)): try: if (fileList[i]) == currentfile: newfile=fileList[i+1] break except: newfile=fileList[0] return newfile # yeah i know .. no thumb but full image, change it yourself! def loadthumb(thumbfile): # IF exists path_to_file = thumbfile path = Path(path_to_file) if path.is_file(): im = Image.open(thumbfile) im=ImageOps.contain(im, (5760,5760)) thumbimage = ImageTk.PhotoImage(image=im) window['image'].update(data=thumbimage) else: window['image'].update("") sg.theme('SystemDefaultForReal') #------- Layout image only --------# layout = [ [[sg.Image('', size=(5760, 1080), key='image',background_color='black',pad=(0, 0))], ]] #------- Set window --------# window = sg.Window('Triple image player', layout, no_titlebar=True, margins=(0,0),location=(0,0), size=(5760,1080), keep_on_top=True, finalize=True,resizable=False) window.bring_to_front() window.Maximize() window.bind("<Escape>", "-ESCAPE-") window.bind("<Return>", "-ENTER-") window['image'].expand(True, True) loadthumb(image) nextfile = image #------------ The Event Loop ------------# while True: event, values = window.read(timeout=1000) # run with a timeout so that current location can be updated if event == sg.WIN_CLOSED: break if event == '-ENTER-': nextfile = nextFile(nextfile,'./') loadthumb(nextfile) if event == '-ESCAPE-': window.close() window.close()
Converting images for right resolution from a temp directory filled with large panorama photos
ls temp | while read; do convert -resize 5760x -gravity center -crop 5760x1080 -auto-orient "temp/$REPLY" "$REPLY" done