|
| 1 | +'''IMAGE VIEWER |
| 2 | +
|
| 3 | +PySimpleGUI reads images in PNG, GIF, PPM/PGM format. |
| 4 | +JPEGs cannot be shown because tkinter does not naively support these formats. |
| 5 | +JPEGs can be converted to PNG format using the Python Imaging Library (PIL) |
| 6 | +package prior to viewing them using PySimpleGUI package. |
| 7 | +
|
| 8 | +Sample code for conversion from JPEG/JPG to PNGs is hsown in the commented code block below. |
| 9 | +
|
| 10 | +extension = values["image_file"].lower().split(".")[-1] |
| 11 | +if extension in ["jpg", "jpeg"]: # JPG file |
| 12 | + new_filename = values["image_file"].replace(extension, "png") |
| 13 | + im = Image.open(values["image_file"]) |
| 14 | + im.save(new_filename) |
| 15 | +''' |
| 16 | + |
| 17 | +import os.path |
| 18 | +import PySimpleGUI as sg |
| 19 | + |
| 20 | +FILE_SELECT_COLUMN_LAYOUT = [ |
| 21 | + [sg.Text("Image Folder"), |
| 22 | + sg.In(size=(25, 1), enable_events=True, key="-FOLDER-"), |
| 23 | + sg.FolderBrowse(),], |
| 24 | + [sg.Listbox(values=[], enable_events=True, size=(40, 20), key="-FILE LIST-")],] |
| 25 | + |
| 26 | +IMAGE_VIEWER_COLUMN_LAYOUT = [ |
| 27 | + [sg.Text("Choose an image from list on left:")], |
| 28 | + [sg.Text(size=(40, 1), key="-IMAGE_FILE-")], |
| 29 | + [sg.Image(key="-IMAGE-")], |
| 30 | +] |
| 31 | + |
| 32 | +# ----- Full Window Layout ----- |
| 33 | +WINDOW_LAYOUT = [[sg.Column(FILE_SELECT_COLUMN_LAYOUT), |
| 34 | + sg.VSeperator(), sg.Column(IMAGE_VIEWER_COLUMN_LAYOUT),]] |
| 35 | + |
| 36 | +CURRENT_WORKING_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) |
| 37 | +WINDOW = sg.Window("Image Viewer", WINDOW_LAYOUT, icon=CURRENT_WORKING_DIRECTORY + "\\img_view.ico") |
| 38 | + |
| 39 | +# Run the Event Loop |
| 40 | +while True: |
| 41 | + EVENT, VALUES = WINDOW.read() |
| 42 | + if EVENT in (sg.WIN_CLOSED, "Exit"): |
| 43 | + break |
| 44 | + # Folder name was filled in, make a list of files in the folder |
| 45 | + if EVENT == "-FOLDER-": |
| 46 | + FOLDER = VALUES["-FOLDER-"] |
| 47 | + try: |
| 48 | + # Get list of files in folder |
| 49 | + FILE_LIST = os.listdir(FOLDER) |
| 50 | + except: |
| 51 | + FILE_LIST = [] |
| 52 | + |
| 53 | + FNAMES = [ |
| 54 | + imgfile for imgfile in FILE_LIST |
| 55 | + if os.path.isfile(os.path.join(FOLDER, imgfile)) |
| 56 | + and imgfile.lower().endswith((".png", ".gif")) |
| 57 | + ] |
| 58 | + WINDOW["-FILE LIST-"].update(FNAMES) |
| 59 | + elif EVENT == "-FILE LIST-": # A file was chosen from the listbox |
| 60 | + try: |
| 61 | + FILENAME = os.path.join( |
| 62 | + VALUES["-FOLDER-"], VALUES["-FILE LIST-"][0] |
| 63 | + ) |
| 64 | + WINDOW["-IMAGE_FILE-"].update(FILENAME) |
| 65 | + WINDOW["-IMAGE-"].update(filename=FILENAME) |
| 66 | + |
| 67 | + except: |
| 68 | + pass |
| 69 | + |
| 70 | +WINDOW.close() |
0 commit comments