Génération de tatouage numérique pour protéger vos photos
Bonjour,
Un petit article technique pour changer. J’avais besoin d’automatiser la génération de miniatures et de tatouages numériques pour notre club de spéléo. Bref, pour ce faire, ce que je conseille :
- Installer IrfanView qui permet de faire des traitements de redimensionnement via un batch Ms-Dos.
- Installer ImageMagik qui permet de fusionner 2 images. Pour le tatouage numérique (Watermark: http://fr.wikipedia.org/wiki/Tatouage_num%C3%A9rique), nous fusionnerons l’image voulue avec une image avec de la transparence.
- Utiliser le batch ci-dessous. Vous trouvez à cette adresse le code source de cet article: http://gourry.no-ip.org/sca/olivier_coquelet/agrandissements_sca/traitement/source/source.zip
Petites explications :
Déjà, il faut se placer dans le répertoire courant, car depuis Vista quand on lance un bat il ne se place plus tout seul dans le répertoire courant (pas très pratique). On utilise donc la commande très claire suivante :
cd %~dp0
Aprés, on crée les répertoires pour les miniatures et les images plus grandes avec Watermark et on copie les fichiers nécessaires (le répertoire courant devra contenir le fichier Watermark et surtout les images que vous voulez traiter):
mkdir « min »
mkdir « max »
copy Water1000.png « max »
copy *.jpg « min »
copy *.jpg « max »
Pour la génération de miniatures, c’est facile, il suffit de se placer dans le répertoire concerné. Puis on utilise IrfanView pour générer des miniatures:
cd « min »
i_view32.exe *.jpg /resize=(250,187) /aspectratio /resample /convert=*.jpg
Pour les grands modéles avec le tatouage numérique, c’est plus compliqué… On commence par générer comme pour les miniatures des images de 1000px de large. Vous reconnaitrez la même commande que pour les miniatures.
cd « max »
i_view32.exe *.jpg /resize=(1000,750) /aspectratio /resample /convert=*.jpg
Et c’est là que ca se complique… On boucle sur tous les fichiers JPG. Et on utilise ImageMagik pour ajouter le watermark aux images grâce à la commande composite.exe. La difficulté c’est d’affecter le nom du fichier à ma variable nomFichier. Car de base les batch ne semblent pas savoir affecter des variables de façon dynamique, c’est pour ca qu’il faut utiliser la commande : setlocal enableextensions enabledelayedexpansion. Sans cette commande et l’utilisation des ! à la place des % habituel, ma variable nomFichier contiendrait toujours le nom du dernier fichier.Sinon, j’ai aussi ajouté une commande pour récupérer le nom du fichier sans l’extension (car mes fichiers ne faisaient toujours que 8 caractères : nomFichier:~0,8. Bref, le codage de batch n’est pas si simple :
setlocal enableextensions enabledelayedexpansion
for %%f in (*.jpg) do (
setlocal
SET nomFichier=%%f
SET nomFichier=!nomFichier:~0,8!
echo WaterMark de !nomFichier!…
composite.exe Water1000.png !nomFichier!.jpg !nomFichier!G.jpg
del !nomFichier!.jpg
endlocal
)
Et voilà le résultat :