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.

#1 Le 24/10/2019, à 14: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, à 18: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, à 20: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, à 13: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
ud1trB1l.png


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, à 17: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, à 17: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, à 20: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 sad

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, à 05: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é smile


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

Hors ligne

#8 Le 20/01/2020, à 23: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 wink

Hors ligne

#9 Le 21/01/2020, à 11: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, à 11:22)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#10 Le 21/01/2020, à 14: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 smile


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

Hors ligne

#11 Le 21/01/2020, à 15: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, à 15:18)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne