#1 Le 24/10/2019, à 13:34
- gatzy
Script pour écrire texte sur un lot de photos
Bonjour
Suite à la discussion lancée ICI je n'arrive pas à mettre au point le script souhaité...
Ayant repris une vieille discussion avec un titre non pertinent pour ma nouvelle question, je n'ai pas reçu de réponse donc j'ouvre un nouveau post en espérant que vous pourrez m'aider.
Mon besoin est d'écrire du texte sur un lot de photos.
Cinaptix m'avait proposé le script suivant mais qui redimensionne également les photos ce que je ne souhaite pas.
#!/bin/sh
rm -rf Img_copyright
mkdir -p Img_copyright
# ================================================================================
# Modifier au besoin, la taille des images, de la police et les diverses mentions.
# Pas d'espaces dans les noms de fichiers.
# Vérifier l'homothétie des images.
# Renommer les .JPG en .jpg
# ================================================================================
TAILLE="1440x810"
NOM="Prénom NOM - 2018 "
POLICE="/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS_Bold.ttf"
TPOLICE=7
TEXTE="Copyright © $NOM"
TOPOLICE=$(( $TPOLICE * 3))
BL=$(( $TPOLICE / 3))
for i in *.jpg
do
/usr/bin/convert -verbose -size $TAILLE xc:none -gravity SouthEast\
-pointsize $TOPOLICE -font @$POLICE \
-stroke black -strokewidth $TPOLICE -draw "text 5,5 '$TEXTE'" \
-channel RGBA -blur 0x$BL -stroke none -fill white \
-draw "text 5,5 '$TEXTE'" \
$i \
-geometry $TAILLE! -compose dst-over -composite \
Img_copyright/$i
done
J'ai donc modifié le script en essayant de comprendre les multiples options de Convert et j'arrive à cela.
#!/bin/sh
rm -rf Img_copyright
mkdir -p Img_copyright
# ================================================================================
# Modifier au besoin, la taille des images, de la police et les diverses mentions.
# Pas d'espaces dans les noms de fichiers.
# Vérifier l'homothétie des images.
# Renommer les .JPG en .jpg
# ================================================================================
TAILLE="1440x810"
NOM="Prénom NOM - 2018 "
POLICE="/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS_Bold.ttf"
TPOLICE=7
TEXTE="Copyright © $NOM"
TOPOLICE=$(( $TPOLICE * 3))
BL=$(( $TPOLICE / 3))
for i in *.JPG
do
/usr/bin/convert -gravity SouthEast\
-pointsize $TOPOLICE -font @$POLICE \
-stroke black -strokewidth $TPOLICE -draw "text 5,5 '$TEXTE'" \
-channel RGBA -blur 0x$BL -stroke none -fill white \
-draw "text 5,5 '$TEXTE'" \
$i \
-compose dst-over -composite \
Img_copyright/$i
done
Sauf que... j'ai dû faire des erreurs car le script ne modifie plus rien…
Précision : mes fichiers sont bien en ".JPG" dans mon répertoire.
Est-ce que vous voyez où sont les erreurs ?
D'avance merci pour vos réponses
Hors ligne
#2 Le 24/10/2019, à 17:43
- lynn
Re : Script pour écrire texte sur un lot de photos
Bonjour,
À la fin de cette ligne, tu as le "\" qui touche SouthEast
/usr/bin/convert -gravity SouthEast\
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#3 Le 24/10/2019, à 19:18
- gatzy
Re : Script pour écrire texte sur un lot de photos
Merci lynn pour la réponse : j'ai ajouté un espace avant le "\" mais le dossier Img_copyrigth reste vide et quand je lance dans un terminal, j'ai les messages suivants :
hintzy@hintzy-System-Product-Name:~/Bureau/TestSignature$ ./ScriptForum_V1.py
convert: no images defined `Img_copyright/DSC00505.JPG' @ error/convert.c/ConvertImageCommand/3258.
convert: no images defined `Img_copyright/DSC00510.JPG' @ error/convert.c/ConvertImageCommand/3258.
convert: no images defined `Img_copyright/DSC00515.JPG' @ error/convert.c/ConvertImageCommand/3258.
convert: no images defined `Img_copyright/DSC00516.JPG' @ error/convert.c/ConvertImageCommand/3258.
convert: no images defined `Img_copyright/DSC00518.JPG' @ error/convert.c/ConvertImageCommand/3258.
convert: no images defined `Img_copyright/DSC00519.JPG' @ error/convert.c/ConvertImageCommand/3258.
convert: no images defined `Img_copyright/DSC00525.JPG' @ error/convert.c/ConvertImageCommand/3258.
convert: no images defined `Img_copyright/DSC00530.JPG' @ error/convert.c/ConvertImageCommand/3258.
hintzy@hintzy-System-Product-Name:~/Bureau/TestSignature$
Des idées ?
Hors ligne
#4 Le 27/10/2019, à 12:54
- Pam547
Re : Script pour écrire texte sur un lot de photos
Bonjour Gatzy,
J'ai suivi votre topic sur la section XFCE.
Je viens d'installer fotoxx, C'est assez simple de créer des scripts en 'mode graphique'.
Une prise en main un peu délicate, mais résultat assez rapide :
- Rognage en lot (après création d'un script puis traitement par lot)
- Montage
Art.9.(code civil) Chacun a droit au respect de sa vie privée.
Art.12.(déclaration universelle des DDH) Nul ne sera l'objet d'immixtions arbitraires dans sa vie privée, sa famille, son domicile ou sa correspondance, ni d'atteintes à son honneur et à sa réputation. Toute personne a droit à la protection de la loi contre de telles immixtions ou de telles atteintes.
Hors ligne
#5 Le 31/10/2019, à 16:27
- Pam547
Re : Script pour écrire texte sur un lot de photos
Re,
Au final, je reviens aux commandes de ImageMagick.
Ce message :
no images defined `Vidéos/Crop1/Vidéos/*.png' @ error/convert.c/ConvertImageCommand/3258.
signale que les fichiers d'entrés sont invalides.
Alors pour votre cas, àmha :
- soit vous lancez le script dans le mauvais dossier
- soit les lignes for i in *.JPG et mkdir -p Img_copyright sont à récrire avec le chemin (jusqu'aux photos à modifier) qui convient.
Dernière modification par Pam547 (Le 31/10/2019, à 16:40)
Art.9.(code civil) Chacun a droit au respect de sa vie privée.
Art.12.(déclaration universelle des DDH) Nul ne sera l'objet d'immixtions arbitraires dans sa vie privée, sa famille, son domicile ou sa correspondance, ni d'atteintes à son honneur et à sa réputation. Toute personne a droit à la protection de la loi contre de telles immixtions ou de telles atteintes.
Hors ligne
#6 Le 31/10/2019, à 19:15
- gatzy
Re : Script pour écrire texte sur un lot de photos
Merci Pam547 pour vos réponses.
Dans mon cas, je pense qu'il trouve bien les fichiers d'entrées puisqu'il a récupéré les n° DSC, c'est plutôt la commande convert qui n'a pas créé l'image de sortie à sauvegarder dans Img_copyright j'ai dû enlever trop de choses
Je viens de reprendre le script initial de Cinaptix et j'ai juste modifié les valeurs de taille pour mettre ceux de 2 photos de test et je récupère bien les photos avec le texte écrit dessus.
Maintenant il faut que je trouve comment récupérer, dans la boucle, les dimensions de chacune des photos à traiter car elles ne sont pas toutes à la même dimension...
D'autre part, j'ai installé ImageMagick mais la prise en main n'est pas évidente, j'avais mis de coté... je préférerais avoir un script "basique" sachant que j’utilise gThumb et Gimp pour traiter mes images individuellement.
A suivre...
Hors ligne
#7 Le 20/01/2020, à 04:06
- soupaloignon
Re : Script pour écrire texte sur un lot de photos
Ta recherche est toujours d'actualité ? j'ai un script qui traîne quelque part qui fait ça, mais je ne veux pas me lancer dans une fouille archéologique si ton problème est réglé
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#8 Le 20/01/2020, à 22:33
- gatzy
Re : Script pour écrire texte sur un lot de photos
Bonsoir
Merci soupaloignon pour ta proposition mais j'ai réussi à mettre au point un script qui répond à mon besoin même si je n'ai pas bien compris toutes les options de convert...
Et du coup, je me dis que la solution que j'ai trouvée pourrait servir à d'autres donc voici le script que j'utilise :
#!/bin/sh
rm -rf Img_copyright
mkdir -p Img_copyright
# ================================================================================
# Seuls les fichiers .jpeg sont pris en compte ici, à modifier si nécessaire
# ================================================================================
NOM="MonNom"
POLICE="/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS_Bold.ttf"
TPOLICE=7
TEXTE="MonTexte © $NOM"
TOPOLICE=$(( $TPOLICE * 3))
BL=$(( $TPOLICE / 3))
for i in *.jpeg
do
L=`identify -ping -format "%w" $i`
H=`identify -ping -format "%h" $i`
X='x'
TAILLE="$L$X$H"
echo $L $H $TAILLE
/usr/bin/convert -verbose -size $TAILLE xc:none -gravity SouthEast\
-pointsize $TOPOLICE -font @$POLICE \
-stroke black -strokewidth $TPOLICE -draw "text 5,5 '$TEXTE'" \
-channel RGBA -blur 0x$BL -stroke none -fill white \
-draw "text 5,5 '$TEXTE'" \
$i \
-geometry $TAILLE! -compose dst-over -composite \
Img_copyright/Logo_$i
done
Ce n'est peut être pas très propre et il y a sûrement moyen de faire plus court mais, ça marche !!! enfin, chez moi
Hors ligne
#9 Le 21/01/2020, à 10:08
- iznobe
Re : Script pour écrire texte sur un lot de photos
Salut ,
si tout est resolu tant mieux , sinon ca ne marchait pas parce que comme indiqué dans le script au tout debut :
# ================================================================================
# Modifier au besoin, la taille des images, de la police et les diverses mentions.
# Pas d'espaces dans les noms de fichiers.
# Vérifier l'homothétie des images.
# Renommer les .JPG en .jpg
# ================================================================================
les images doivent avoir une extension " .jpg " au lieu de " .JPG " si j ' ai bien compris , pour etre prise en compte par le script ( ou alors je suis completement a coté de la plaque et ne tenez pas compte de ma remarque ) .
si c ' est le cas , il serait possible d' ajouter une ligne dans le code afin de renommer les fichiers en *.JPG en *.jpg
soit avec la commande cp pour garder intact l ' original , soit avec la commande mv pour ne pas faire monter la taille du disque et ne garder que le nouveau fichier .
Dernière modification par iznobe (Le 21/01/2020, à 10:22)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#10 Le 21/01/2020, à 13:44
- soupaloignon
Re : Script pour écrire texte sur un lot de photos
Ou faire en sorte que le script travaille sur jpg, jpeg, JPG, JPEG
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#11 Le 21/01/2020, à 14:18
- Watael
Re : Script pour écrire texte sur un lot de photos
ah, si seulement il existait un moyen de protéger les espaces dans les noms de fichiers traités dans une boucle for...
c'est pas comme si on avait inventé les guillemets. grrr.
il faut toujours mettre les Développements de variables entre guillemets. TOUJOURS, sauf si on sait pourquoi.
Dernière modification par Watael (Le 21/01/2020, à 14:18)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne