This application is built with PyQt6 and is available in two versions: GUI and CLI. It is designed to compress images and optionally remove EXIF metadata.
The application provides two processing modes: Compress and Resize. Compress reduces file size using a configurable scaling factor and optimization level, while Resize compresses images by adjusting their width and height dimensions.
👉 🔍 Click the image for a clearer view.
Please note: This project is under active development. Some wording in the descriptions may be refined over
time.
Development progress may vary as this project is maintained alongside professional work responsibilities.
Thank you for your understanding.
GUI Mode
 |
| Application first startup. |
 |
| The user opens the file manager and selects multiple
images for batch compression. |
 |
| Compressing images. |
 |
| Compression done. |
 |
| About application. |
 |
| The user reads EXIF metadata from the opened image. |
 |
| The image EXIF metadata was previously removed during compression, therefore the status appears at the top in red text. |
 |
| The result is marked with "exif-removed_compressed" when
the user chooses to remove EXIF and compress. If only EXIF is removed, no compression is applied. |
CLI Mode
 |
| This CLI mode complements the GUI mode, making it simple
yet efficient without the need for boilerplate GUI widgets. It can also be configured in .bash_aliases
for easy access. For example: alias
imgcompress='/home/user/Documents/Hallo/PROGRAM_FILES/ImageCompressor/ImageCompressor --cli'. |
 |
| Every time the user compresses images with the CLI, the folder
containing the compressed images is automatically opened, whether it’s
on the Desktop, Documents, Pictures, or another directory. (This gallery
feature was created while the CLI program is still under development,
so the [*DEBUG*] sign may appear). |
Source Package Structure
 |
| I adopt the MVC design pattern for all programs (CLI) and
applications (GUI), so this is the default structure of my source code. My inspiration comes from Java,
which has a clean and well organized package structure. |
Miscellaneous Application Folder Data
 |
| For every program (CLI) and application (GUI) I develop, I always use a
default application folder to store its data, such as logs,
configurations, JSON, db file, etc. |
Distribution Ready Binary
 |
| Both the GUI application and the CLI program run as binary executables and include a desktop launcher, allowing users to start the program with a single click. |