An application wrote by Python language (using CustomTkinter library) to compress images.
In this project, I create an image compression application using the "customtkinter" library. I use four different image compression algorithms: PCA, FFT, Wavelet, and SVD. Since the image compression algorithms are still in the early stages of development, you are free to modify or manage them as you see fit. The only thing we need to worry about in this situation is how the app functions.
- Applications: Visual Studio Code used with Python 3.11 (3.11.7) installed from Microsoft Store.
- Packages:
- CustomTkinter 5.2.1:
pip install customtkinter==5.2.1 - Packaging 23.2:
pip install packaging==23.2 - Pillow 10.1.0:
pip install Pillow==10.1.0 - Numpy 1.26.2:
pip uninstall numpy==1.26.2 - PyWavelet 1.5.0:
pip install PyWavelets==1.5.0 - Sklearn 1.3.2:
pip install scikit-learn==1.3.2 - Matplotlib 3.8.2:
pip install matplotlib==3.8.2 - Scikit-image:
pip install scikit-image==0.22.0
- CustomTkinter 5.2.1:
Use the following command to install all of the above packages if you haven't already. pip install -r requirements.txt
This is application's interface:

- I used to use .jpg or .png files.
- Width and Height are the picture's dimensions on both sides.
- Size on disk is the image's size as it is saved to a computer.
- Compession Ratio is the ratio of the compressed image's size to its original size.
- Compression Factor is the ratio of the image's size between its original and compressed sizes.
- MSE stands for Mean Squared Error,the lower its value, the better the image quality and conversely, the higher its value, the poorer the image quality.
- PSNR stands for Peak Signal-to-Noise Ratio, the higher its value, the better the image quality and conversely, the lower its value, the poorer the image quality.
- Compression Time is the duration of image compression, the amount of time needed for the app to complete its full operation.

