Looking for a fast, clean, and feature-rich way to convert images in bulk using Python? In this tutorial, weβll walk through SnapConvert, a desktop application that lets you convert, resize, and manage images with ease.
π Get the full project here: https://gum.new/gum/cmjz96c0w001304jvdjdoaeuc
πΈ What is SnapConvert?
SnapConvert is a Python-based GUI tool built with Tkinter, ttkbootstrap, and Pillow that allows you to:
Convert images between formats (PNG, JPEG, BMP, GIF)
Batch process multiple images or entire folders
Resize images quickly
Adjust JPEG quality
Drag & drop files into the app
Track conversion history using SQLite
Preview converted images instantly
π§° Tech Stack
Hereβs what powers SnapConvert:
Tkinter + ttkbootstrap β Modern UI
Pillow (PIL) β Image processing
SQLite3 β Conversion history
Threading β Smooth, non-blocking UI
TkinterDnD2 β Drag & drop support
π§ Key Features Breakdown
- π Flexible Image Input
You can:
Select individual images
Load entire folders
Or simply drag-and-drop files into the window
Supported formats:
.png, .jpg, .jpeg, .bmp, .gif
- βοΈ Smart Conversion Options
SnapConvert gives you full control:
Output format (PNG, JPEG, BMP, GIF)
JPEG quality (10β100)
Resize images (set pixel size or keep original)
Filename control
Keep original names
Or auto-number outputs
- π Batch Processing with Threads
Conversions run in a separate thread, so the UI stays responsive.
thread = Thread(
target=convert_images_worker,
args=(...)
)
thread.start()
This means no freezingβeven with large batches.
- π Progress Tracking
A real-time progress bar updates as images are processed:
progress_callback(int((i+1)/len(images)*100))
- π Conversion History (SQLite)
Every conversion is stored in a local database:
CREATE TABLE images (
id INTEGER PRIMARY KEY AUTOINCREMENT,
filename TEXT,
original_path TEXT,
converted_path TEXT
)
You can:
View all past conversions
Double-click to preview images
Clear history anytime
- π§Ή File & History Management
SnapConvert separates:
History deletion (keeps files)
File deletion (keeps history)
This gives you full control over your workspace.
- πΌ Instant Preview
Double-click any entry in the table to open the converted image using your system viewer:
os.startfile(path) # Windows
π§© Core Conversion Logic
Hereβs the heart of the app:
img = Image.open(img_path)
if resize > 0:
img = img.resize((resize, resize), Image.ANTIALIAS)
img.save(output_path, output_format.upper(), **save_params)
It handles:
Resizing
Format conversion
Quality adjustments (JPEG)
π― User Experience Highlights
Clean dark UI using ttkbootstrap
Drag-and-drop support across the entire window
Modal help guide built into the app
Auto-created output directory
Cross-platform folder opening (Windows/macOS/Linux)
π§ͺ How to Run the App
Install dependencies:
pip install pillow ttkbootstrap tkinterdnd2
Run the script:
python snapconvert.py
π‘ Ideas for Improvement
Want to take it further?
Add WebP support
Enable custom width/height resizing (not just square)
Add watermarking
Export history to CSV
Add dark/light theme toggle
π Final Thoughts
SnapConvert is a great example of how you can combine Python + GUI + image processing into a practical desktop tool.
Whether you're a developer or just someone who works with images often, this project is a solid foundation to build upon.
π Download & explore the full project:
https://gum.new/gum/cmjz96c0w001304jvdjdoaeuc

Top comments (0)