Blog / Geek

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 :

  1. Installer IrfanView qui permet de faire des traitements de redimensionnement via un batch Ms-Dos.
  2. 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.
  3. 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 :

articles-0102G.jpg

Auteur

loistoria@gmail.com
Articles historiques de balades et bricolage

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *


Neige sur Souilhe

22 janvier 2013