Jean Michel Missègue-Delmas wrote:
> J'ai 240 photos sur lesquelles je dois ajouter un texte identique pour 
> chaque photo, existe t-il une méthode pour pouvoir faire cette opération 
> en  lot svp? J'ai pas envie d'écrire 240 fois la même chose ;)

Ca se fait très bien avec ImageMagick (paquet imagemagick), qui fournit 
plusieurs outils de traitement d'image en ligne de commande, dont "convert".

Voici quelques exemples:

Ajouter un bandeau de texte bleu sur fond blanc au dessous d'image.jpg:

convert image.jpg -background white -font Helvetica -fill blue 
-pointsize 72 label:"phrase de test" -gravity Center -append 
image_avec_texte.jpg

Ajouter un bandeau de texte bleu sur fond blanc au dessus d'image.jpg:

convert image.jpg -background white -font Helvetica -fill blue 
-pointsize 72 label:"phrase de test" +swap -gravity Center -append 
image_avec_texte.jpg

Ajouter du texte blanc surligner en noir sur image.txt:
convert image.jpg -font Helvetica -pointsize 48 -gravity south -stroke 
'#000C' -strokewidth 2 -annotate 0 "phrase de test" -stroke  none 
-fill white -annotate 0 "phrase de test" image_avec_texte.jpg

-pointsize permet de gérer la taille de l'image
-gravity permet de gérer l'emplacement du texte sur l'image (south, 
north, east, west ....)
-font permet de sélectionner la police utilisée ... utiliser la commande 
  "identify -list font" pour connaître la liste des polices accessibles 
par convert

Maintenant pour appliquer ceci à 240 images, il suffit de faire un peu 
de bash:

Dans l'exemple suivant les images se trouvent dans le dossier 
$HOME/Images/projet1 et sont nommées imageXXX.jpg (XXX allant de 001 à 
240), le dossier en contenant pas d'autres images.

la commande utilisée est la 3e présentée (écriture sur l'image).

On peut utiliser 2 méthodes (même plus mais je n'en parlerais que de 2):

1- avec une boucle "for" :
cd $HOME/Images/projet1
for image_name in $(ls *.jpg); do convert $image_name -font Helvetica 
-pointsize 48 -gravity south -stroke '#000C' -strokewidth 2 -annotate 0 
"phrase de test" -stroke  none   -fill white -annotate 0 "phrase de 
test" $(basename $image_name)_avec_texte.jpg ; done

2- avec la commande find (celle-ci ne posera pas problème si il y a des 
espaces dans le nom des images ... mais bien sûr personne ne met 
d'espaces dans ses noms de fichiers ...) :
find $HOME/Images/projet1 -maxdepth 1 -iname "*.jpg" -exec convert {} 
-font Helvetica -pointsize 48 -gravity south -stroke '#000C' 
-strokewidth 2 -annotate 0 "phrase de test" -stroke  none   -fill white 
-annotate 0 "phrase de test" $(basename {})_avec_texte.jpg \;


dans les 2 cas le dossier $HOME/Images/projet1 se retrouve peuplé 
d'images annotées dont le nom est imageXXX_avec_texte.jpg

Bonne continuation

Ju
-- 
Celui qui prétend que l'on peut croître indéfiniment dans un espace 
limité est soit un fou, soit un économiste !

-- 
ubuntu-fr mailing list
ubuntu-fr@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-fr

Répondre à