from py_image_manipulation.effect import pix_to_image, image_to_pix import py_image_manipulation.transformations # noqa: F401 from py_image_manipulation.util import get_filters, apply_filter import PySimpleGUI as sg # type: ignore import PIL.Image # type: ignore import io image_files = ( ("Image files", "*.jpeg"), ("Image files", "*.jpg"), ("Image files", "*.png"), ("Image files", "*.gif"), ) if __name__ == "__main__": sg.theme("DarkAmber") layout = [ [sg.Text("Image Output", justification="center")], [sg.Image(size=(400, 400), key="image")], [sg.Text("Select Transformation:")], [ sg.Listbox( list(get_filters().keys()), size=(20, 4), default_values=["NoEffect"], key="filter", ) ], [sg.Text("Input Image Filename:")], [ sg.Input(default_text="test_images/11.jpg", key="input"), sg.FileBrowse(file_types=image_files), sg.Button("Run"), ], [sg.Text("", size=(50, 3), text_color="red", key="error")], ] window = sg.Window("Image Manipulation", layout) while True: event, values = window.read() if event == sg.WIN_CLOSED: # if user closes window or clicks cancel break bio = io.BytesIO() try: img = PIL.Image.open(values["input"]) window["error"].update("") except FileNotFoundError: window["error"].update("File does not exist") continue img.thumbnail((400, 400)) try: filtered = apply_filter(values["filter"][0], image_to_pix(img)) pix_to_image(filtered).save(bio, format="PNG") except Exception as e: window["error"].update("Error updating image: " + str(e)) continue window["image"].update(data=bio.getvalue())