Skip to content

Commit 0c3dc0e

Browse files
author
ajinkya
committed
Add image-watermarker app
1 parent 3901276 commit 0c3dc0e

File tree

9 files changed

+644
-0
lines changed

9 files changed

+644
-0
lines changed

Image-watermarker/.gitignore

+167
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
# Project-Wide
2+
images/
3+
.venv
4+
5+
6+
# Byte-compiled / optimized / DLL files
7+
__pycache__/
8+
*.py[cod]
9+
*$py.class
10+
11+
# C extensions
12+
*.so
13+
14+
# Distribution / packaging
15+
.Python
16+
build/
17+
develop-eggs/
18+
dist/
19+
downloads/
20+
eggs/
21+
.eggs/
22+
lib/
23+
lib64/
24+
parts/
25+
sdist/
26+
var/
27+
wheels/
28+
share/python-wheels/
29+
*.egg-info/
30+
.installed.cfg
31+
*.egg
32+
MANIFEST
33+
34+
# PyInstaller
35+
# Usually these files are written by a python script from a template
36+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
37+
*.manifest
38+
*.spec
39+
40+
# Installer logs
41+
pip-log.txt
42+
pip-delete-this-directory.txt
43+
44+
# Unit test / coverage reports
45+
htmlcov/
46+
.tox/
47+
.nox/
48+
.coverage
49+
.coverage.*
50+
.cache
51+
nosetests.xml
52+
coverage.xml
53+
*.cover
54+
*.py,cover
55+
.hypothesis/
56+
.pytest_cache/
57+
cover/
58+
59+
# Translations
60+
*.mo
61+
*.pot
62+
63+
# Django stuff:
64+
*.log
65+
local_settings.py
66+
db.sqlite3
67+
db.sqlite3-journal
68+
69+
# Flask stuff:
70+
instance/
71+
.webassets-cache
72+
73+
# Scrapy stuff:
74+
.scrapy
75+
76+
# Sphinx documentation
77+
docs/_build/
78+
79+
# PyBuilder
80+
.pybuilder/
81+
target/
82+
83+
# Jupyter Notebook
84+
.ipynb_checkpoints
85+
86+
# IPython
87+
profile_default/
88+
ipython_config.py
89+
90+
# pyenv
91+
# For a library or package, you might want to ignore these files since the code is
92+
# intended to run in multiple environments; otherwise, check them in:
93+
# .python-version
94+
95+
# pipenv
96+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
97+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
98+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
99+
# install all needed dependencies.
100+
#Pipfile.lock
101+
102+
# poetry
103+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
104+
# This is especially recommended for binary packages to ensure reproducibility, and is more
105+
# commonly ignored for libraries.
106+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
107+
#poetry.lock
108+
109+
# pdm
110+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
111+
#pdm.lock
112+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
113+
# in version control.
114+
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
115+
.pdm.toml
116+
.pdm-python
117+
.pdm-build/
118+
119+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
120+
__pypackages__/
121+
122+
# Celery stuff
123+
celerybeat-schedule
124+
celerybeat.pid
125+
126+
# SageMath parsed files
127+
*.sage.py
128+
129+
# Environments
130+
.env
131+
.venv
132+
env/
133+
venv/
134+
ENV/
135+
env.bak/
136+
venv.bak/
137+
138+
# Spyder project settings
139+
.spyderproject
140+
.spyproject
141+
142+
# Rope project settings
143+
.ropeproject
144+
145+
# mkdocs documentation
146+
/site
147+
148+
# mypy
149+
.mypy_cache/
150+
.dmypy.json
151+
dmypy.json
152+
153+
# Pyre type checker
154+
.pyre/
155+
156+
# pytype static type analyzer
157+
.pytype/
158+
159+
# Cython debug symbols
160+
cython_debug/
161+
162+
# PyCharm
163+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
164+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
165+
# and can be added to the global gitignore or merged into this file. For a more nuclear
166+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
167+
#.idea/

Image-watermarker/README.md

+98
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# Watermarking Application
2+
3+
A Python-based watermarking application built using `CustomTkinter` and `PIL` that allows users to add text and logo watermarks to images. The application supports the customization of text, font, size, color, and the ability to drag and position the watermark on the image.
4+
5+
## Features
6+
7+
- **Text Watermark**: Add customizable text to your images.
8+
- Select font style, size, and color.
9+
- Drag and position the text watermark on the image.
10+
- **Logo Watermark**: Add a logo or image as a watermark.
11+
- Resize and position the logo watermark.
12+
- Supports various image formats (JPG, PNG, BMP).
13+
- **Mutual Exclusivity**: The application ensures that users can either add text or a logo as a watermark, not both simultaneously.
14+
- **Image Saving**: Save the watermarked image in PNG format with an option to choose the file name and location.
15+
16+
## Installation
17+
18+
### Prerequisites
19+
20+
- Python 3.6 or higher
21+
- `PIL` (Pillow)
22+
- `CustomTkinter`
23+
24+
### Installation Steps
25+
26+
1. **Clone the repository:**
27+
28+
```bash
29+
git clone https://github.com/jinku-06/Image-Watermarking-Desktop-app.git
30+
cd watermarking-app
31+
```
32+
33+
2. **Install the required packages:**
34+
35+
```bash
36+
pip install -r requirements.txt
37+
```
38+
39+
3. **Run the application:**
40+
41+
```bash
42+
python app.py
43+
```
44+
45+
## Usage
46+
47+
1. **Load an Image**: Start by loading an image onto the canvas.
48+
2. **Add Text Watermark**:
49+
- Input your desired text.
50+
- Customize the font style, size, and color.
51+
- Drag and position the text on the image.
52+
- Note: Adding a text watermark disables the option to add a logo.
53+
3. **Add Logo Watermark**:
54+
- Select and upload a logo or image to use as a watermark.
55+
- Resize and position the logo on the image.
56+
- Note: Adding a logo watermark disables the option to add text.
57+
4. **Save the Image**: Once satisfied with the watermark, save the image to your desired location.
58+
59+
## Project Structure
60+
61+
```bash
62+
watermarking-app/
63+
64+
├── fonts/ # Custom fonts directory
65+
├── app.py # Main application file
66+
├── watermark.py # Watermark functionality class
67+
├── requirements.txt # Required Python packages
68+
└── README.md # Project documentation
69+
```
70+
71+
## Sample and look
72+
73+
Below are some sample images showcasing the application work:
74+
75+
UI:
76+
77+
<img src="https://github.com/user-attachments/assets/637200b2-6b88-4135-81fd-3c909aafbc4c" width ="500" height="350" alt='Userinterface image'>
78+
79+
Text Watermark :
80+
81+
<img src="https://github.com/user-attachments/assets/096e2675-d528-4ef7-aa98-b8483fb1c883" width="300" height="350" alt="text watermark demo image">
82+
83+
Logo Watermark:
84+
85+
<img src="https://github.com/user-attachments/assets/536675ae-a165-49b7-8294-0b599faa58f6" width="300" height="350" alt="logo watermark demo image">
86+
87+
88+
89+
90+
91+
92+
93+
94+
95+
96+
97+
98+

0 commit comments

Comments
 (0)