Meeting 5 Demo Project: Mini Image Editor using PySimpleGUI

Posted by


In this tutorial, we will create a mini image editor using PySimpleGUI. PySimpleGUI is a Python package that allows us to create simple graphical user interfaces (GUIs) in a convenient and efficient manner. We will use PySimpleGUI along with the Pillow library, which is a powerful image processing library in Python.

Before we begin, make sure you have PySimpleGUI and Pillow installed. You can install them using pip:

pip install PySimpleGUI
pip install Pillow

Now, let’s get started with the demo project.

Step 1: Import the necessary libraries

import PySimpleGUI as sg
from PIL import Image, ImageTk
import io

Step 2: Define the layout of the GUI

In this step, we will define the layout of the GUI. We will create a simple interface with options to load an image, apply filters, and save the edited image.

layout = [
    [sg.Text('Mini Image Editor')],
    [sg.FileBrowse('Choose File', key='-FILE-')],
    [sg.Radio('Grayscale', 'FILTER', key='-GRAYSCALE-'), sg.Radio('Blur', 'FILTER', key='-BLUR-')],
    [sg.Button('Apply Filter'), sg.Button('Save Image')],
    [sg.Image(key='-IMAGE-')]
]

Step 3: Create the window

Next, we will create the window using the layout we defined in the previous step.

window = sg.Window('Mini Image Editor', layout)

Step 4: Main event loop

In this step, we will create a main event loop to handle user interactions with the GUI.

image = None

while True:
    event, values = window.read()

    if event == sg.WIN_CLOSED:
        break
    elif event == 'Apply Filter':
        if values['-FILE-']:
            if values['-GRAYSCALE-']:
                image = Image.open(values['-FILE-']).convert('L')
            elif values['-BLUR-']:
                image = Image.open(values['-FILE-']).filter(ImageFilter.BLUR)
            img_io = io.BytesIO()
            image.save(img_io, format='PNG')
            window['-IMAGE-'].update(data=img_io.getvalue())
    elif event == 'Save Image':
        if image:
            save_path = sg.popup_get_file('Save Image As', save_as=True)
            if save_path:
                image.save(save_path)

Step 5: Run the application

Finally, we will run the application by calling the window.read() method.

window.close()

That’s it! You have created a mini image editor using PySimpleGUI. You can further customize and enhance the functionality of the editor by adding more filters and editing tools. Happy coding!