| Image Compressor v1.9.0. |
Hello everyone, good evening! Thank you all for taking the time to review my work. I really appreciate it. This application is called, Image Compressor. It is designed to compress images, remove EXIF metadata, and manually resize images.
I’d like to show you how this application was built and how it works, let’s get started!
Application Features:
- Compress images to reduce file size.
- Resize images to custom dimensions.
- Remove EXIF metadata for privacy.
- Drag and drop support.
Application Display (GUI & CLI)
The application consist of two mode the GUI and the CLI, and each mode has its own version.
![]() |
| GUI v1.9.0. |
| CLI v1.8.0 |
And the lastest feature I added to the CLI is cancellation keyword `c`, allowing users to return to the compression type selection menu.
![]() |
| `c`, allowing users to return to the compression type selection menu. |
Application Design
This application is built using the MVC (Model-View-Controller) architecture, which separates concerns into modular components:
- Models handle data and configuration.
- Views manage the display and user interface.
- Controllers act as the bridge between models and views.
Thanks to this design pattern, developers benefit from easier maintenance, clearer structure, and greater flexibility when updating or modifying the codebase.
![]() |
| Source code designed based on the MVC architecture. |
![]() |
| Distribution ready binary. |
Models, Views And Controllers
![]() |
| Source code of the application GUI. |
![]() |
| Source code of the program CLI. |
![]() |
| Source code of the models. |
The models class contains the core configuration of the application, making it easier for maintainers to modify and adapt the system for future updates and maintenance.
![]() |
| Source code of the controllers. |
The controllers manage the flow of data throughout the application lifecycle, making it easier to implement future updates and maintenance.
Note: For my next application, I’m planning to make some adjustments to the MVC design. I really like the structure and architecture used in Java and Kotlin, so I’d like to incorporate a dedicated data model and a more modular approach to the MVC.
Default Application Folder
![]() |
| The default directory for storing application-related data. |
This default directory is used by the application to store its data, including JSON configuration files, log files, and other related resources.
End
![]() |
| About application. |
This section serves as an introduction to my application. In the next section, I will provide a video demonstration so you can see it in action.
Thank you for visiting my blog, and have a great day!









