Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 11/09/2008, à 13:02

john5168

Re : Créer un filigrane sur vos photo

oui je suis toujours là, mais j'ai pas beaucoup de temps en se moment.

Tes idées sont les bien venue, balance.


Les associations du logiciel libre :
http://www.april.org/ ; http://www.aful.org/
Boutique informatique à encourager
Je suis client satisfais de Novatux

Hors ligne

#27 Le 11/09/2008, à 13:23

soupaloignon

Re : Créer un filigrane sur vos photo

Merci de ta réponse. Voilà quelques idées en vrac, à toi de voir si tu juges ça intéressant.

Actuellement le script travaille juste sur un dossier et les photos qu'il contient. Si par contre on a besoin de marquer par exemple 10 photos dans un dossier qui en contient 100, on est obligé de les sélectionner, de les copier dans un nouveau dossier, et de travailler sur le dossier.
Est ce que cela ne serait pas intéressant que le script travaille sur les fichiers directement ? Ca résoud le cas de figure ci-dessus, et pour les personnes qui veulent marquer les 100 photos du dossier un simple CTRL + A et le tour est joué.

Dans la suite de cette idée plutôt que de demander à l'utilisateur où il veut ranger les photos marquées, ce qui occasionne une suite de clics, pourquoi ne pas créer automatiquement un dossier dans le répertoire qui contient les photos à marquer ?

Sinon 2 idées pour le script en l'état :
Rajouter la possibilité de marquer des images en png
Mettre les couleurs du texte en variables, c'est plus simple si quelqu'un veut modifier les couleurs pour les adapter à ses besoins.

En tout cas bravo pour ce script, c'est vraiment du beau boulot


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#28 Le 12/09/2008, à 13:01

john5168

Re : Créer un filigrane sur vos photo

je suis pas pro de la programmation, donc prêtant pas savoir tout faire.

Pour la sélection des fichers sa doit pouvoirs se faire (tu a fait l'essai, sa marche peut être déjà).
Pour le choix du répertoire cible je préfère laisser le choix a l'utilisateur plutôt que de lui imposé. Car pour les novices ils ont pas toujours le réflexe de regarder se qu'a fait le script.
Pour les png je pense que sa doit être possible, a voir.
Pour les couleurs moi je ne sais pas du tout commuant je pourrais faire sa. Mais si une personne compétente passe par ici je suis toujours preneur.


Les associations du logiciel libre :
http://www.april.org/ ; http://www.aful.org/
Boutique informatique à encourager
Je suis client satisfais de Novatux

Hors ligne

#29 Le 12/09/2008, à 13:24

soupaloignon

Re : Créer un filigrane sur vos photo

john5168 a écrit :

Pour la sélection des fichers sa doit pouvoirs se faire (tu a fait l'essai, sa marche peut être déjà).

J'ai fait l'essai, et justement, cela ne fonctionne pas. D'où cette fonctionnalité que je te proposais et qui peut être intéressante je pense.

john5168 a écrit :

Pour le choix du répertoire cible je préfère laisser le choix a l'utilisateur plutôt que de lui imposé. Car pour les novices ils ont pas toujours le réflexe de regarder se qu'a fait le script.

Si ce n'est que ce dernier point un simple message en fin de travail du script peut annoncer qu'un dossier nommé XX a été créé dans le répertoire courant, et qu'il contient les photos marquées.
Pour le 1er point c'est vrai que c'est bien de ne rien imposer. Par contre les novices auraient peut etre tendance à se mélanger les pinceaux avec cette fenetre et le choix d'un repertoire, c'était dans ce sens que je proposais d'en créer un automatiquement.

john5168 a écrit :

Pour les png je pense que sa doit être possible, a voir.

Je pense pas que cela soit compliqué d'indiquer a find de trouver plusieurs types de fichiers.

john5168 a écrit :

Pour les couleurs moi je ne sais pas du tout commuant je pourrais faire sa. Mais si une personne compétente passe par ici je suis toujours preneur.

Ca je pense pouvoir le faire. Je teste et te dirait ça


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#30 Le 12/09/2008, à 14:09

soupaloignon

Re : Créer un filigrane sur vos photo

Voilà, ça marche pour les variables de couleurs

J'ai rajouté

ColorTexte="#000000b6" 
ColorContour="#eeeeee50"

juste apres la ligne

interligne=15  # 0 = grand interligne <=> infini = faible interligne pour texte vertical

et dans le script remplacer :

-fill '#000000b6' -stroke '#eeeeee50'

par

-fill "$ColorTexte" -stroke "$ColorContour"

Dernière modification par soupaloignon (Le 12/09/2008, à 14:10)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#31 Le 12/09/2008, à 14:34

soupaloignon

Re : Créer un filigrane sur vos photo

J'ai aussi fait un test avec du png avec ça

NB_PHOTOS=$(find $folder -iregex '.*\.\(jpg\|JPG\|png\)' | wc -l)

Le script trouve bien la photo en png, la transfère avec les jpg dans le nouveau dossier créé, mais par contre ne la marque pas. Alors que les jpg sont marqués... Curieux roll

Dernière modification par soupaloignon (Le 12/09/2008, à 14:34)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#32 Le 12/09/2008, à 17:42

john5168

Re : Créer un filigrane sur vos photo

si il traite pas les png c que tu a pas modifié la ligne :

# Boucle traitement des photos
    IFS=$'\n' && for i in $(find $ficsrc/${folder##*/} -iname '*.jpg' -o -iname '*.jpeg');do

Regarde les commentaires la ligne que tu a modifié agie sur la bare de progression et la copie mais pas la boucle de traitement.

Pour la couleur ok je n'avais pas compris je pensais que tu voulez une boite de dialogue pour le choix de la couleur. Sa serais bien aussi sa non ?

Pour la copie du dossier ok on vas voir sa. Mais il faut déjà trouvé le moyens de prendre que les fichiers.

Si tu arrive a tes fins merci de publié sur le post l'intégralité du script modifié.

Dernière modification par john5168 (Le 12/09/2008, à 17:45)


Les associations du logiciel libre :
http://www.april.org/ ; http://www.aful.org/
Boutique informatique à encourager
Je suis client satisfais de Novatux

Hors ligne

#33 Le 12/09/2008, à 19:22

soupaloignon

Re : Créer un filigrane sur vos photo

Au temps pour moi, la ligne m'avait échappé wink. Ca fonctionne maintenant.
Je met le script ici, avec les modifs que j'ai faite + quelques corrections d'orthographe.
J'ai continué à numéroter la version aussi, histoire que l'on ne s'embrouille pas wink. C'est donc la version 6.1

En ce qui concerne les couleurs l'idée était plutôt d'avoir à les modifier une seule fois dans le script si besoin était.
Offrir la possibilité d'un truc interractif avec l'utilisateur doit être un peu plus chaud. Pour que cela soit vraiment convivial il faudrait proposer une palette de couleurs sur laquelle l'user aurait juste à cliquer, mais là c'ets en dehors de mes compétences.

john5168 a écrit :

Pour la copie du dossier ok on vas voir sa. Mais il faut déjà trouvé le moyens de prendre que les fichiers..

Et là aussi je ne sais pas faire smile

#!/bin/bash
## auteur : john5168
## dépendance : zenity ; imagemagick
## version : 6.1
## 2008-09-12

# Change le séparateur standard (espace) pour RETURN
IFS='
' 
taille=14      # 0 = grand <=> infini = petit
position=30    # 0 = long du bord <=> infini = proche du bord
contour=400    # 0 = gros contour de texte <=> infini = faible contour de texte
interligne=15  # 0 = grand interligne <=> infini = faible interligne pour texte vertical

ColorTexte="#000000b6" 
ColorContour="#eeeeee50" 

folder_ok="false" 
# Sélection des photos dans nautilus
folder="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
# Variable de la barre de progression
NB_PHOTOS=$(find $folder -iregex '.*\.\(jpg\|JPG\|png\)' | wc -l)
COMPTEUR=0 
# Séléction d'action
RET=`zenity --list --checklist --width=450 --height=250 \
        --title "Action à définir pour les photos" \
        --column="" --column "Liste des actions" \
        TRUE    "Filigrane horizontal" \
        FALSE    "Filigrane vertical à gauche" \
        FALSE    "Filigrane vertical à droite" \
        FALSE    "Redimentionnement réduction de la taille des photos" \
        FALSE    "Compression jpg"`
if [ "$?" != "1" ]
then    
    if echo "$RET" | grep "Filigrane horizontal"; then
        Horiz=`zenity --entry --text="Texte en filigrane horizontal" --entry-text="Texte horizontal"`|| exit 1
    fi
    if echo "$RET" | grep "Filigrane vertical à gauche"; then
        VertG=`zenity --entry --text="Texte en filigrane vertical à gauche
Utiliser le caractère \ pour les espaces et
un espace entre chaque caractères" --entry-text="T e x t e \ G a u c h e"`|| exit 1
    fi
    if echo "$RET" | grep "Filigrane vertical à droite"; then
        VertD=`zenity --entry --text="Texte en filigrane vertical à droite
Utiliser le caractère \ pour les espaces et
un espace entre chaque caractère" --entry-text="T e x t e \ D r o i t e"`|| exit 1            
    fi
    if echo "$RET" | grep "Redimentionnement réduction de la taille des photos"; then
        Red=`zenity --entry --text="Facteur de réduction des photos en %" --entry-text="50%"`|| exit 1
    fi
    if echo "$RET" | grep "Compression jpg"; then
        Comp=`zenity --entry --text="Facteur de compression des photos en %
100% = pas de compression" --entry-text="60"`|| exit 1
    fi 
# Sélection du dossier où sont copiées les photos
ficsrc=`zenity --file-selection --directory "Choix du repertoire "`
if [ "$?" != "1" ]
then
      echo "repertoire choisi " $ficsrc

    # Vérification de l'existance du dossier de destination
    if [ ! -x $ficsrc/${folder##*/} ]
    then
    folder_ok="true" 
    else
    zenity --question --title "Attention" --text "Le fichier que vous avez sélectionné : \n ${folder##*/} \n Existe déjà dans : \n $ficsrc \n \n Êtes-vous sur de vouloir l'écraser ?"
    if [ "$?" != "1" ]
    then
        folder_ok="true" 
    else
               echo "Le fichier sélectionné existe déjà"
    fi    
    fi
    # Ok pour copie avec écrasement
    if [ "$folder_ok" = "true" ]
    then
    
    # copie du dossier source
    (cp -r $folder $ficsrc

    # Calcul du nombre de caractères dans les textes verticaux
    nbVG=$(echo "scale=9; (`echo $VertG | wc -c` / 2)" | bc)
    nbVD=$(echo "scale=9; (`echo $VertD | wc -c` / 2)" | bc)
    # Boucle traitement des photos
    IFS=$'\n' && for i in $(find $ficsrc/${folder##*/} -iregex '.*\.\(jpg\|JPG\|png\)');do
#IFS=$'\n' && for i in $(find $ficsrc/${folder##*/} -iname '*.jpg' -o -iname '*.jpeg');do

    IFS=$' \n\t'
      # Détection de la hauteur et largeur
      l=`identify -format "%w" "$i"`
      h=`identify -format "%h" "$i"`
      # Calcul de la taille du texte en fonction de l'oriantation et le taille de l'image 
      if [ "$l" -lt "$h" ]
      then
        tl=$(echo "scale=9; ($l / $taille)" | bc)
        pos=$(echo "scale=9; ($l / $position)" | bc)
        ct=$(echo "scale=9; ($l / $contour)" | bc)
    int=$(echo "scale=9; ($l / $interligne)" | bc)
      else 
        tl=$(echo "scale=9; ($h / $taille)" | bc)
        pos=$(echo "scale=9; ($h / $position)" | bc)
        ct=$(echo "scale=9; ($h / $contour)" | bc)
    int=$(echo "scale=9; ($h / $interligne)" | bc)
      fi

    if echo "$RET" | grep "Filigrane horizontal"; then
        mogrify -gravity south -font Bookman-DemiItalic -pointsize $tl \
        -fill "$ColorTexte" -stroke "$ColorContour" -strokewidth $ct \
        -annotate +0+$pos "$Horiz" "$i"
    fi
    if echo "$RET" | grep "Filigrane vertical à gauche"; then    
        cent=$(echo "scale=9; (($h - ($nbVG * $tl)) / 2)" | bc)    
        mogrify -gravity northwest -font Bookman-DemiItalic \
        -pointsize $tl -fill "$ColorTexte" -stroke "$ColorContour" -strokewidth $ct \
        `y=$cent;for x in $VertG; do echo -annotate +$pos+$y $x; y=$(echo "scale=9; ($y + $int)" | bc);done` "$i"
    fi
    if echo "$RET" | grep "Filigrane vertical à droite"; then
        cent=$(echo "scale=9; (($h - ($nbVD * $tl)) / 2)" | bc)
        mogrify -gravity northeast -font Bookman-DemiItalic \
        -pointsize $tl -fill "$ColorTexte" -stroke "$ColorContour" -strokewidth $ct \
        `y=$cent;for x in $VertD; do echo -annotate +$pos+$y $x; y=$(echo "scale=9; ($y + $int)" | bc);done` "$i"
    fi
    if echo "$RET" | grep "Redimentionnement réduction de la taille des photos"; then
        # Reduction de la taille de la photo 
        # 50% = 1/2 ; 25% = 1/4 de la taille d'origine        
        mogrify -resize $Red "$i"
    fi
    if echo "$RET" | grep "Compression jpg"; then
        # Niveau de compression : 0 (qualité d’image la plus mauvaise et la plus compressée)
        # à 100 (meilleure qualité mais compression moins efficace)
        mogrify -compress JPEG -quality $Comp "$i"
    fi      

      # faire le calcul du pourcentage, puis envoyer le résultat dans le tube.
      COMPTEUR=$((COMPTEUR + 100))
      echo $((COMPTEUR / NB_PHOTOS)) 
    done ) | zenity --progress --auto-close || exit 1
    fi
else 
     echo "Pas de repertoire choisi"
fi
else
     echo "Pas de choix de traitement de photo"
fi
      ## gravity = southeast (bas à droite) ; south (bas centré) ; southwest (bas à gauche)
      ## NorthWest, North, NorthEast, West, Center, East, SouthWest, South, ou SouthEast
      ## fill = couleur du texte 
      ##   en rba noir = 000000 et opaque =00 invisible = ee
      ##          blanc = eeeeee
      ## stroke = couleur du contour du texte
      ##   en rba noir = 000000 et opaque =00 invisible = ee
      ##          blanc = eeeeee
      ## font = police du texte
      ## annotate position +x+y et contenu du texte

Dernière modification par soupaloignon (Le 12/09/2008, à 19:28)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#34 Le 22/09/2008, à 03:00

kikislater

Re : Créer un filigrane sur vos photo

on peut avoir des scrrenshot du résultat final svp?
merci

Hors ligne

#35 Le 20/04/2010, à 11:26

cerberes

Re : Créer un filigrane sur vos photo

Bonjour,

Nouveau sur votre forum et surtout nouvel utilisateur de linux (ubuntu 9.04) et ex windowsien ....

Je cherchais un moyen de mettre un filigrane et me voila chez vous.

Merci beaucoup pour ce script, c'est du super bon boulot.

Bravo

Hors ligne

#36 Le 25/04/2010, à 22:26

jieff610

Re : Créer un filigrane sur vos photo

Bonjour à vous,

Ayant récemment achevé ma migration au delà du cercle polaire linuxien, j'ai souhaité apporter ma contribution à ce script en permettant l'utilisation d'un filigrane "personnel".
J'ai donc ajouté une entrée dans le menu principal (après avoir déplacé en tête de liste le redimensionnement), puis ajouté la fonction correspondante.

Sauf que... ça ne fonctionne pas...
Mes compétences en programmation se limitant ici, je laisse cette proposition entre vos mains expertes smile

Merci

PS: je me suis permis de corriger quelques photes par-ci par-là smile

#!/bin/bash
## auteur : john5168
## dépendance : zenity ; imagemagick
## version : 6.1
## 2008-09-12

# Change le séparateur standard (espace) pour RETURN
IFS='
' 
taille=14      # 0 = grand <=> infini = petit
position=30    # 0 = long du bord <=> infini = proche du bord
contour=400    # 0 = gros contour de texte <=> infini = faible contour de texte
interligne=15  # 0 = grand interligne <=> infini = faible interligne pour texte vertical

ColorTexte="#000000b6" 
ColorContour="#eeeeee50" 

folder_ok="false" 
# Sélection des photos dans nautilus
folder="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
# Variable de la barre de progression
NB_PHOTOS=$(find $folder -iregex '.*\.\(jpg\|JPG\|png\)' | wc -l)
COMPTEUR=0 
# Séléction d'action
RET=`zenity --list --checklist --width=450 --height=250 \
        --title "Action à définir pour les photos" \
        --column="" --column "Liste des actions" \
        TRUE    "Redimensionnement réduction de la taille des photos" \
	TRUE    "Filigrane personnalisé" \
        FALSE    "Filigrane horizontal" \
        FALSE    "Filigrane vertical à gauche" \
        FALSE    "Filigrane vertical à droite" \
        FALSE    "Compression jpg"`

if [ "$?" != "1" ]
then
    fi
    if echo "$RET" | grep "Redimensionnement réduction de la taille des photos"; then
        Red=`zenity --entry --text="Facteur de réduction des photos en %" --entry-text="21%"`|| exit 1
    fi
    if echo "$RET" | grep "Filigrane personnalisé"; then
        Fil=`zenity --entry`|| exit 1
    fi    
    if echo "$RET" | grep "Filigrane horizontal"; then
        Horiz=`zenity --entry --text="Texte en filigrane horizontal" --entry-text="Texte horizontal"`|| exit 1
    fi
    if echo "$RET" | grep "Filigrane vertical à gauche"; then
        VertG=`zenity --entry --text="Texte en filigrane vertical à gauche
Utiliser le caractère \ pour les espaces et
un espace entre chaque caractères" --entry-text="T e x t e \ G a u c h e"`|| exit 1
    fi
    if echo "$RET" | grep "Filigrane vertical à droite"; then
        VertD=`zenity --entry --text="Texte en filigrane vertical à droite
Utiliser le caractère \ pour les espaces et
un espace entre chaque caractère" --entry-text="T e x t e \ D r o i t e"`|| exit 1            

    if echo "$RET" | grep "Compression jpg"; then
        Comp=`zenity --entry --text="Facteur de compression des photos en %
100% = pas de compression" --entry-text="60"`|| exit 1
    fi 
# Sélection du dossier où sont copiées les photos
ficsrc=`zenity --file-selection --directory "Choix du repertoire "`
if [ "$?" != "1" ]
then
      echo "repertoire choisi " $ficsrc

    # Vérification de l'existence du dossier de destination
    if [ ! -x $ficsrc/${folder##*/} ]
    then
    folder_ok="true" 
    else
    zenity --question --title "Attention" --text "Le fichier que vous avez sélectionné : \n ${folder##*/} \n Existe déjà dans : \n $ficsrc \n \n Êtes-vous sur de vouloir l'écraser ?"
    if [ "$?" != "1" ]
    then
        folder_ok="true" 
    else
               echo "Le fichier sélectionné existe déjà"
    fi    
    fi
    # Ok pour copie avec écrasement
    if [ "$folder_ok" = "true" ]
    then
    
    # copie du dossier source
    (cp -r $folder $ficsrc

    # Calcul du nombre de caractères dans les textes verticaux
    nbVG=$(echo "scale=9; (`echo $VertG | wc -c` / 2)" | bc)
    nbVD=$(echo "scale=9; (`echo $VertD | wc -c` / 2)" | bc)
    # Boucle traitement des photos
    IFS=$'\n' && for i in $(find $ficsrc/${folder##*/} -iregex '.*\.\(jpg\|JPG\|png\)');do
#IFS=$'\n' && for i in $(find $ficsrc/${folder##*/} -iname '*.jpg' -o -iname '*.jpeg');do

    IFS=$' \n\t'
      # Détection de la hauteur et largeur
      l=`identify -format "%w" "$i"`
      h=`identify -format "%h" "$i"`
      # Calcul de la taille du texte en fonction de l'orientation et le taille de l'image 
      if [ "$l" -lt "$h" ]
      then
        tl=$(echo "scale=9; ($l / $taille)" | bc)
        pos=$(echo "scale=9; ($l / $position)" | bc)
        ct=$(echo "scale=9; ($l / $contour)" | bc)
    int=$(echo "scale=9; ($l / $interligne)" | bc)
      else 
        tl=$(echo "scale=9; ($h / $taille)" | bc)
        pos=$(echo "scale=9; ($h / $position)" | bc)
        ct=$(echo "scale=9; ($h / $contour)" | bc)
    int=$(echo "scale=9; ($h / $interligne)" | bc)
      fi

    if echo "$RET" | grep "Filigrane horizontal"; then
        mogrify -gravity south -font Bookman-DemiItalic -pointsize $tl \
        -fill "$ColorTexte" -stroke "$ColorContour" -strokewidth $ct \
        -annotate +0+$pos "$Horiz" "$i"
    fi
    if echo "$RET" | grep "Filigrane vertical à gauche"; then    
        cent=$(echo "scale=9; (($h - ($nbVG * $tl)) / 2)" | bc)    
        mogrify -gravity northwest -font Bookman-DemiItalic \
        -pointsize $tl -fill "$ColorTexte" -stroke "$ColorContour" -strokewidth $ct \
        `y=$cent;for x in $VertG; do echo -annotate +$pos+$y $x; y=$(echo "scale=9; ($y + $int)" | bc);done` "$i"
    fi
    if echo "$RET" | grep "Filigrane vertical à droite"; then
        cent=$(echo "scale=9; (($h - ($nbVD * $tl)) / 2)" | bc)
        mogrify -gravity northeast -font Bookman-DemiItalic \
        -pointsize $tl -fill "$ColorTexte" -stroke "$ColorContour" -strokewidth $ct \
        `y=$cent;for x in $VertD; do echo -annotate +$pos+$y $x; y=$(echo "scale=9; ($y + $int)" | bc);done` "$i"
    fi
    if echo "$RET" | grep "Filigrane personnalisé"; then
        # Ce fichier doit être nommé signature.png, et enregistré dans ~/.gnome2/nautilus-scripts/       
        composite -dissolve 100 ~/.gnome2/nautilus-scripts/signature.png -gravity southeast "$picture" s_"$picture"
    fi
    if echo "$RET" | grep "Compression jpg"; then
        # Niveau de compression : 0 (qualité d’image la plus mauvaise et la plus compressée)
        # à 100 (meilleure qualité mais compression moins efficace)
        mogrify -compress JPEG -quality $Comp "$i"
    fi      

      # faire le calcul du pourcentage, puis envoyer le résultat dans le tube.
      COMPTEUR=$((COMPTEUR + 100))
      echo $((COMPTEUR / NB_PHOTOS)) 
    done ) | zenity --progress --auto-close || exit 1
    fi
else 
     echo "Pas de repertoire choisi"
fi
else
     echo "Pas de choix de traitement de photo"
fi
      ## gravity = southeast (bas à droite) ; south (bas centré) ; southwest (bas à gauche)
      ## NorthWest, North, NorthEast, West, Center, East, SouthWest, South, ou SouthEast
      ## fill = couleur du texte 
      ##   en rba noir = 000000 et opaque =00 invisible = ee
      ##          blanc = eeeeee
      ## stroke = couleur du contour du texte
      ##   en rba noir = 000000 et opaque =00 invisible = ee
      ##          blanc = eeeeee
      ## font = police du texte
      ## annotate position +x+y et contenu du texte

Dernière modification par jieff610 (Le 25/04/2010, à 22:31)

Hors ligne

#37 Le 06/08/2010, à 15:22

snoogy

Re : Créer un filigrane sur vos photo

Bonjour, j'ai essayer le script, tout ce passe bien mais sur l'image finale on ne vois pas le filigrane...

d'ou pourrai provenir l'erreur ?

ce script me serai bien utile, j'ai 400 photo a filigraner (pour les essaye j'en ai pris une dizaine seulement, tous en jpeg)

Dernière modification par snoogy (Le 06/08/2010, à 15:23)

Hors ligne

#38 Le 06/08/2010, à 16:04

AnsuzPeorth

Re : Créer un filigrane sur vos photo

Bjr,
J'avais fait un petit script y a longtemps (suite à une demande précise). Ajouter un filigranne (png) sur des photos.
Il utilise Nconvert (fourni dans l'archive), ca se passe en glissant les images sur des lanceurs qui sont crées par le script ...
Lis le LISEZ_MOI.txt.

Je n'ai pas poussé les tests à l'époque, mais il fonctionnait parfaitement. 400 images ... J'ai pas essayé, mais y a pas de raisons.

Si ca peut te servir : http://gwebradio.googlecode.com/files/Taggimg.tar.gz

Les images converties seront dans le dossier IMG_TAGG

Sinon, regarde la doc de Nconvert, tu peux modifier facilement le traitement effectuer (qqles connaissance en bash), les scripts sont dans un dossier caché wink

Dernière modification par AnsuzPeorth (Le 06/08/2010, à 16:11)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#39 Le 06/08/2010, à 16:40

soupaloignon

Re : Créer un filigrane sur vos photo

celui-ci fonctionne

#!/bin/bash
## auteur : john5168
## dépendance : zenity ; imagemagick
## version : 6

# Change le séparateur standard (espace) pour RETURN
IFS='
' 
taille=14      # 0 = grand <=> infini = petit
position=30    # 0 = long du bord <=> infini = proche du bord
contour=400    # 0 = gros contour de texte <=> infini = faible contour de texte
interligne=15  # 0 = grand interligne <=> infini = faible interligne pour texte vertical

folder_ok="false" 
# Sélection des photo dans nautilus
folder="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
# Variable de la barre de progression
NB_PHOTOS=$(find $folder -iname '*.jpg' -o -iname '*.jpeg' | wc -l)
COMPTEUR=0 
# Séléction d'action
RET=`zenity --list --checklist --width=450 --height=250 \
        --title "Action à définir pour les photos" \
        --column="" --column "Liste des actions" \
        TRUE    "Filigrane horizontal" \
        FALSE    "Filigrane vertical à gauche" \
        FALSE    "Filigrane vertical à droite" \
        FALSE    "Redimentionnement réduction de la taille des photos" \
        FALSE    "Compression jpg"`
if [ "$?" != "1" ]
then    
    if echo "$RET" | grep "Filigrane horizontal"; then
        Horiz=`zenity --entry --text="Texte en filigrane horizontal" --entry-text="Texte horizontal"`|| exit 1
    fi
    if echo "$RET" | grep "Filigrane vertical à gauche"; then
        VertG=`zenity --entry --text="Texte en filigrane vertical à gauche
Utilisé le caractère \ pour les espaces et
un espace entre chaque caractères" --entry-text="T e x t e \ G a u c h e"`|| exit 1
    fi
    if echo "$RET" | grep "Filigrane vertical à droite"; then
        VertD=`zenity --entry --text="Texte en filigrane vertical à droite
Utilisé le caractère \ pour les espaces et
un espace entre chaque caractères" --entry-text="T e x t e \ D r o i t e"`|| exit 1            
    fi
    if echo "$RET" | grep "Redimentionnement réduction de la taille des photos"; then
        Red=`zenity --entry --text="Facteur de réduction des photos en %" --entry-text="50%"`|| exit 1
    fi
    if echo "$RET" | grep "Compression jpg"; then
        Comp=`zenity --entry --text="Facteur de compression des photos en %
100% = pas de compression" --entry-text="60"`|| exit 1
    fi 
# Sélection du dossier où sont copiées les photos
ficsrc=`zenity --file-selection --directory "Choix du repertoire "`
if [ "$?" != "1" ]
then
      echo "repertoire choisi " $ficsrc

    # Vérification de l'existance du dossier de destination
    if [ ! -x $ficsrc/${folder##*/} ]
    then
    folder_ok="true" 
    else
    zenity --question --title "Attention" --text "Le fichier que vous avez sélectionné : \n ${folder##*/} \n Existe déjà dans : \n $ficsrc \n \n Êtes-vous sur de vouloir l'écraser ?"
    if [ "$?" != "1" ]
    then
        folder_ok="true" 
    else
               echo "Le fichier sélectionné existe déjà"
    fi    
    fi
    # Ok pour copie avec écrasement
    if [ "$folder_ok" = "true" ]
    then
    
    # copie du dossier source
    (cp -r $folder $ficsrc

    # Calcul du nombre de caractères dans les textes verticaux
    nbVG=$(echo "scale=9; (`echo $VertG | wc -c` / 2)" | bc)
    nbVD=$(echo "scale=9; (`echo $VertD | wc -c` / 2)" | bc)
    # Boucle traitement des photos
    IFS=$'\n' && for i in $(find $ficsrc/${folder##*/} -iname '*.jpg' -o -iname '*.jpeg');do
    IFS=$' \n\t'
      # Détection de la hauteur et largeur
      l=`identify -format "%w" "$i"`
      h=`identify -format "%h" "$i"`
      # Calcul de la taille du texte en fonction de l'oriantation et le taille de l'image 
      if [ "$l" -lt "$h" ]
      then
        tl=$(echo "scale=9; ($l / $taille)" | bc)
        pos=$(echo "scale=9; ($l / $position)" | bc)
        ct=$(echo "scale=9; ($l / $contour)" | bc)
    int=$(echo "scale=9; ($l / $interligne)" | bc)
      else 
        tl=$(echo "scale=9; ($h / $taille)" | bc)
        pos=$(echo "scale=9; ($h / $position)" | bc)
        ct=$(echo "scale=9; ($h / $contour)" | bc)
    int=$(echo "scale=9; ($h / $interligne)" | bc)
      fi

    if echo "$RET" | grep "Filigrane horizontal"; then
        mogrify -gravity south -font Bookman-DemiItalic -pointsize $tl \
        -fill '#eeeeeeb6' -stroke '#eeeeee50' -strokewidth $ct \
        -annotate +0+$pos "$Horiz" "$i"
    fi
    if echo "$RET" | grep "Filigrane vertical à gauche"; then    
        cent=$(echo "scale=9; (($h - ($nbVG * $tl)) / 2)" | bc)    
        mogrify -gravity northwest -font Bookman-DemiItalic \
        -pointsize $tl -fill '#000000b6' -stroke '#eeeeee50' -strokewidth $ct \
        `y=$cent;for x in $VertG; do echo -annotate +$pos+$y $x; y=$(echo "scale=9; ($y + $int)" | bc);done` "$i"
    fi
    if echo "$RET" | grep "Filigrane vertical à droite"; then
        cent=$(echo "scale=9; (($h - ($nbVD * $tl)) / 2)" | bc)
        mogrify -gravity northeast -font Bookman-DemiItalic \
        -pointsize $tl -fill '#000000b6' -stroke '#eeeeee50' -strokewidth $ct \
        `y=$cent;for x in $VertD; do echo -annotate +$pos+$y $x; y=$(echo "scale=9; ($y + $int)" | bc);done` "$i"
    fi
    if echo "$RET" | grep "Redimentionnement réduction de la taille des photos"; then
        # Reduction de la taille de la photo 
        # 50% = 1/2 ; 25% = 1/4 de la taille d'origine        
        mogrify -resize $Red "$i"
    fi
    if echo "$RET" | grep "Compression jpg"; then
        # Niveau de compression : 0 (qualité d’image la plus mauvaise et la plus compressée)
        # à 100 (meilleure qualité mais compression moins efficace)
        mogrify -compress JPEG -quality $Comp "$i"
    fi      

      # faire le calcul du pourcentage, puis envoyer le résultat dans le tube.
      COMPTEUR=$((COMPTEUR + 100))
      echo $((COMPTEUR / NB_PHOTOS)) 
    done ) | zenity --progress --auto-close || exit 1
    fi
else 
     echo "Pas de repertoire choisi"
fi
else
     echo "Pas de choix de traitement de photo"
fi
      ## gravity = southeast (bas à droite) ; south (bas centré) ; southwest (bas à gauche)
      ## NorthWest, North, NorthEast, West, Center, East, SouthWest, South, ou SouthEast
      ## fill = couleur du texte 
      ##   en rba noir = 000000 et opaque =00 invisible = ee
      ##          blanc = eeeeee
      ## stroke = couleur du contour du texte
      ##   en rba noir = 000000 et opaque =00 invisible = ee
      ##          blanc = eeeeee
      ## font = police du texte
      ## annotate position +x+y et contenu du texte

==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#40 Le 06/08/2010, à 17:20

snoogy

Re : Créer un filigrane sur vos photo

Merci Soupaloignon, ca marche impeccable big_smile

@AnsuzPeorth merci aussi pour ton script mais il ne convient pas a mon utilisation smile

Hors ligne

#41 Le 07/08/2010, à 13:14

soupaloignon

Re : Créer un filigrane sur vos photo

>> snoogy
Quelle est la version du script que tu as testé et qui ne fonctionnait pas ?


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#42 Le 07/08/2010, à 18:56

snoogy

Re : Créer un filigrane sur vos photo

Les 2 script son en version 6.
Le 1er que j'ai tester est au tout début de se topic, le 2eme le dernier que tu as poster hier a 16h40.

En fait ca ne fonctionne pas avec les 2 si au choix du dossier de destination (avec les filigrane) je le place dans le même dossier que les photos.

Si je choisi un dossier de destinations hors du dossier photo ca fonctionne smile

Hors ligne