
Watermark — Application de Filigrane d'Images
Application Python moderne développée avec Tkinter et PIL pour ajouter des filigranes textuels sur les images. Interface intuitive avec prévisualisation en temps réel, redimensionnement automatique et sauvegarde multi-formats.
Vue d'ensemble du projet
Watermark est une application Python complète développée avec Tkinteret PIL (Pillow) pour ajouter des filigranes textuels sur les images. L'application propose une interface moderne et intuitive permettant de charger des images, d'ajouter des filigranes personnalisés et de sauvegarder le résultat dans différents formats.
Le projet intègre un système de prévisualisation en temps réel avec redimensionnement automatique, un algorithme de filigrane en mosaïque qui répète le texte sur toute l'image, et une gestion intelligente des formats d'image (PNG, JPEG, BMP) avec support de la transparence.
L'interface utilisateur moderne utilise des styles TTK personnalisés, des couleurs harmonieuses et une expérience utilisateur fluide. Le système de filigrane applique une transparence modérée pour préserver la lisibilité de l'image originale tout en ajoutant une protection visuelle efficace.
Fonctionnalités clés
Implémentation du code
1. Import des bibliothèques
import tkinter as tk from tkinter import filedialog, messagebox from tkinter import ttk from PIL import Image, ImageTk, ImageDraw, ImageFont
2. Structure de la classe principale
class ApplicationFiligrane:
"""Classe principale de l'application de filigrane d'images."""
def __init__(self, fenetre_principale):
self.fenetre = fenetre_principale
self._configurer_fenetre()
self._creer_styles()
self._creer_interface()
self._initialiser_variables()
def _configurer_fenetre(self):
"""Configure les paramètres de base de la fenêtre."""
self.fenetre.title("Application de Filigrane d'Images")
self.fenetre.geometry("800x600")
self.fenetre.configure(bg="#f0f0f0")3. Chargement et affichage d'images
def charger_image(self):
"""Ouvre une boîte de dialogue pour sélectionner une image."""
chemin_fichier = filedialog.askopenfilename(
title="Sélectionner une image",
filetypes=[
("Images", "*.png;*.jpg;*.jpeg;*.bmp"),
("Tous les fichiers", "*.*")
]
)
if chemin_fichier:
try:
# Ouvrir et convertir l'image en RGBA pour supporter la transparence
self.image_originale = Image.open(chemin_fichier).convert("RGBA")
self.afficher_image(self.image_originale)
messagebox.showinfo("Succès", "Image chargée avec succès!")
except Exception as erreur:
messagebox.showerror("Erreur", f"Impossible d'ouvrir l'image.\n{erreur}")4. Algorithme de filigrane en mosaïque
def _dessiner_filigrane_mosaique(self, dessinateur, texte, police,
largeur_texte, hauteur_texte, espacement, taille_image):
"""Dessine le filigrane en mosaïque sur toute l'image."""
largeur_image, hauteur_image = taille_image
# Parcourir l'image et dessiner le filigrane répétitivement
for y in range(0, hauteur_image, hauteur_texte + espacement):
for x in range(0, largeur_image, largeur_texte + espacement):
# Dessiner le texte en gris clair avec transparence modérée
dessinateur.text(
(x, y),
texte,
fill=(80, 80, 80, 100), # Gris clair avec transparence
font=police
)5. Sauvegarde multi-formats
def sauvegarder_image(self):
"""Sauvegarde l'image avec filigrane dans un fichier."""
chemin_fichier = filedialog.asksaveasfilename(
title="Sauvegarder l'image",
defaultextension=".png",
filetypes=[
("Image PNG", "*.png"),
("Image JPEG", "*.jpg;*.jpeg")
]
)
if chemin_fichier:
try:
# Si sauvegarde en JPEG, convertir de RGBA vers RGB
if chemin_fichier.lower().endswith((".jpg", ".jpeg")):
image_rgb = self.image_filigrane.convert("RGB")
image_rgb.save(chemin_fichier)
else:
self.image_filigrane.save(chemin_fichier)
messagebox.showinfo("Succès", "Image avec filigrane sauvegardée!")
except Exception as erreur:
messagebox.showerror("Erreur", f"Impossible de sauvegarder.\n{erreur}")Détails du projet
Client
Projet Personnel
Timeline
2025 – Présent
Rôle
Développeur Python
Fonctionnalités de l'application
Métriques de performance
Traitement
Temps réel
Formats supportés
PNG, JPEG, BMP
Interface
800x600px responsive
Qualité
Préservation optimale
Autres projets

JobHub – Plateforme d'Emploi Intelligente avec Agent IA
Application Web Full-Stack

Email AI Platform
Intelligence Artificielle

Ovia
Intelligence Artificielle

MediBook Platform
Web Application (Healthcare SaaS)

MediBook Healthcare Passport
Web Application (Healthcare SaaS)

MediBook Pharma Platform
Web Application (Healthcare SaaS)
© 2026 Sina Ganji. Kõik õigused kaitstud.