A full-featured desktop application built with Python and Tkinter that allows users to add text or logo watermarks to images with powerful customization options.
- ✅ Upload any image and add a custom watermark
- ✅ Add either text or logo (or both!) as a watermark
- ✅ Drag and drop to reposition the watermark on the image
- ✅ Customize text:
- Font family
- Font size
- Text color
- Opacity
- ✅ Resize logos dynamically
- ✅ Add multiple layers: text + logo
- ✅ Undo and Redo support (with full action history)
- ✅ Smart warning if watermark might get cut off
- ✅ Transparent checkerboard background preview
- ✅ Scrollable responsive UI for smaller windows
Initial View | Text Watermark | Logo Watermark | Undo/Redo |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- Python 3
- Tkinter (GUI)
- Pillow (PIL) – Image processing
This project helped solidify several key programming skills:
- 🧠 Object-Oriented Design: Using a
WatermarkApp
class to handle state and logic - 🎨 GUI Development: Scrollable, dynamic interfaces in Tkinter
- 🖼️ Image Manipulation: Transparent overlays, layering, resizing, and blending
- 🕹️ Drag-and-Drop: Interactive repositioning of both text and logos
- 🔁 Undo/Redo: Implementing state history with deep copies
⚠️ UX Warnings: Dynamic validation and visual safeguards
- Clone the repo:
git clone https://github.com/Cyber-Security-Tech/image-watermarking-app
- Install dependencies:
pip install pillow
- Run the app:
python main.py
image-watermarking-app/
├── main.py
├── ui.py
├── file_manager.py
├── watermark.py
├── assets/
│ └── checkerboard_bg.png
├── media/
│ ├── demo/
│ │ └── demo.gif
│ └── screenshots/
│ ├── initial_view.png
│ ├── text_watermark.png
│ ├── logo_watermark.png
│ └── undo_redo.png
└── README.md
main.py
/ui.py
— App entry and GUI logicfile_manager.py
— Load/save helper functionswatermark.py
— Watermark rendering logicmedia/screenshots/
— App screenshotsmedia/demo/
— Demo GIFREADME.md
— This file
- Add watermark presets
- Option to batch watermark multiple images
- Save/export watermark styles
- Real-time zoom and pan controls
This project demonstrates real-world GUI programming and image processing with Python.