Note: As I balance professional work with personal projects, my available time is limited. Nevertheless, I hope this content clearly shows my enthusiasm for Linux and software development. Thank you for your understanding.

Sunday, August 23, 2026

Programming Scripting Automation: PART I (INTRODUCTION) Image Compressor

 

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.

The latest features I’ve added to the GUI include drag and drop support for adding images and a Clear button for removing images from the queue.

 

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:


  1. Models handle data and configuration.
  2. Views manage the display and user interface.
  3. 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.

The application consists of two main interfaces: GUI and CLI. The GUI is designed for users who prefer a graphical interface with a clean and intuitive layout, while the CLI mode is intended for power users who value simplicity and efficiency. Additionally, the application can run entirely in a terminal environment, making it suitable for platforms such as Termux or headless servers without a GUI.

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!