MiniPic Showcase

The How

MiniPics is a desktop application developed using Python using Pillow as a dependency. At the front end it uses Tkinter and is built to work on multiple operating systems.

The program is designed to be easy to use, lightweight and is an alternative to compressing and optimising pictures online. During testing, it was able to reduce the file size of images by up to 55% by just using the auto optimise option. The resulting pictures visually appeared to be the same.

Once downloaded, it allows users to browse and upload the images which they wish to work on into the tool. Users with then have the following options:

  • Auto optimise – for users who either want a quick result, do not want to alter any settings or those who simply are unsure on how to use the settings.
  • Change quality
  • Resize the images
  • Change the format of the images
What
Why

The Why

I began to work on this project with a colleague in mind. My colleague is not computer savvy and so online tools can become quite daunting. Moreover, a lot of tools online allow only one function, and so if you would want to compress and resize often you would need to use multiple tools. I therefore wanted to create an all-in-one tool that is easy to use and can be launched right from the desktop.

One of the most important aspects of the tool was that it must be easy to use. Though I wanted to target generally anyone who has the need to optimise images quite frequently, I wanted to focus more on the people who find optimisation tools quite daunting.

The How

MiniPics was created using Python with only Pillow as a dependency for the backend. Pillow offers great image manipulation and is well documented. I did consider using OpenCV instead which is also well documented, however as I used Pillow previously to serve images on a website had developed on Django, I opted to go with what I was familiar with.

Whilst designing the GUI, I wanted to ensure that it was as user-friendly as possible. I therefore took special care when labelling and each option and put focus on error handling.

I have implemented methods to ensure that if the user imports any invalid file types or any unsupported image formats, then they are notified. I also ensured that if a supported image produces an error in the backend, this file is skipped and the user is notified. I have given the program to friends and family who are not as computer literate to test.

Furthermore, I have created a documentation which I post online on the website for users who want that extra guide. The documentation uses images at every step and covers every state of the program.

Presently, the program has a lot of scope for development. Using Google Analytics, I am able to view how well the website is performing. I have also signed up for Webwiki so that I receive feedback on the program. Using these, I can assess the popularity of the program and develop the program further using the feedback obtained coupled with my own ideas.

How