Niouzes.org  

Précédent   Niouzes.org > Forum > Newsgroup fr.comp.lang.* Forum > Newsgroup fr.comp.lang.python
S'inscrire FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus



Réponse

 

LinkBack Outils de la discussion Modes d'affichage
  #1 (permalink)  
Vieux 27/07/2008, 06h15
fr
 
Messages: n/a
Par défaut insérer du texte dans un jpg

Bonjour,

J'ai récupéré je ne sais plus où, http://www.root66.net ne me renseigne pas
.....

_____________

#!/bin/sh
#
# Incrustation de la date, de l'heure, du nom de fichier et/ou du
commentaire dans des images JPG
# -----------------------------------------------------------------------------------------------
#
# D'apres les infos Exif Date/Time/Comment et le nom xxxx.jpg, on incruste :
#
# JJ/MM/AA HHhMM xxxx commentaire
#
# en noir/blanc en bas a gauche de l'image.
#
# Toutes les combinaisons sont possibles en option
#
# les suffixes jpeg, JPEG et JPG sont transormes en jpg.
#
# Boucle sur les seules images jpg du dossier courant
# ou plusieurs niveaux de sous-dossiers selon la variable
# max passee en 1er argument du script.
#
# Auteur : Jeanmm
# Date : aout 2006
# Licence : GPL
# Lien : http://www.root66.net

# Les arguments doivent etre numeriques et sont tous positionnels;
# les noms de fichiers doivent etre sans blancs.

# 1er argument : profondeur du find
# ---------------------------------

if [ 0$1 -eq 0 ] ; then
max=$1
else
max=1
fi

# Les 5 arguments suivants sont dans l'ordre les champs optionnels :
# - date
# - heure
# - nom de fichier
# - commentaire
# - taille caracteres (ratio hauteur d'image / taille des caracteres)
# avec 0 : absence, 1 : present (sauf taille)
# valeurs par defaut : 0 0 0 0 30

if [ 0$2$3$4$5 -eq 0 ] ; then
echo "Aucune incrustation demandee ?!?"
exit 1
fi

blabla=""

if [ 0$2 -eq 0 ] ; then
Date=0
else
Date=$2
blabla="$blabla Date"
fi

if [ 0$3 -eq 0 ] ; then
Heure=0
else
Heure=$3
blabla="$blabla Heure"
fi

if [ 0$4 -eq 0 ] ; then
Nom=0
else
Nom=$4
blabla="$blabla Nom"
fi

if [ 0$5 -eq 0 ] ; then
Comm=0
else
Comm=$5
blabla="$blabla Commentaire"
fi

# rapport taille image / taille car >= 5; 30 par defaut
if [ 0$6 -eq 0 ] ; then
tcc=30
else
if [ 0$6 -lt 5 ] ; then
tcc=5
else
tcc=$6
fi
fi

# Si un 7eme argument est present on liste des infos en +
# -------------------------------------------------------

if [ 0$7 -eq 0 ] ; then
Bavard=0
else
if [ $7 -gt 1 ] ; then
set -x
fi
Bavard=$7
fi

# Comptage des images
# -------------------

countT=0
for ii in `find . -maxdepth $max -type f -iname "*.jpg"` ; do
countT=$[$countT + 1]
done

test $countT -eq 0 && echo "Aucune image.jpg a traiter ?" && exit 0

if [ $Bavard -eq 1 ] ; then
if [ $countT -lt 1 ] ; then
echo "Incrustation de texte : aucune image trouvee"
exit 0
elif [ $countT -lt 2 ] ; then
echo "Incrustation avec ratio hauteur-image/texte de $tcc : $countT
image trouvee"
else
echo "Incrustation avec ratio hauteur-image/texte de $tcc : $countT
images trouvees"
fi
fi

# Traitement
# ----------

cc=0 # compteur d'images traitees

for i in `find . -maxdepth $max -type f -iname "*.jpg" | sort` ; do

# Lecture de la date
d1=""
d2=""
d3=""
if [ $Date -ne 0 ] ; then
# Lecture de date par ImageMagick-identify
#d1=" "`identify -format "%[EXIFateTime]" "$i" | awk '{print
substr($1,9,2)}'`"/"
# ou lecture par jhead (laisser l'une des 2 en commentaire)
d1=" "`jhead "$i" | awk ' $1=="Date/Time" {print substr($3,9,2) }'
`"/"
#d2=`identify -format "%[EXIFateTime]" "$i" | awk '{print
substr($1,6,2)}'`
d2=`jhead "$i" | awk '$1=="Date/Time" {print substr($3,6,2)}'`"/"
#d3=`identify -format "%[EXIFateTime]" "$i" | awk '{print
substr($1,3,2)}'`
d3=`jhead "$i" | awk '$1=="Date/Time" {print substr($3,3,2)}'`
if [ $d1 == "/" ] ; then
d1=""
fi
if [ $d2 == "/" ] ; then
d2=""
fi
fi

# Lecture de l'heure
d4=""
d5=""
if [ $Heure -ne 0 ] ; then
#d4=" "`identify -format "%[EXIFateTime]" "$i" | awk '{print
substr($2,1,2)}'`"h"
d4=" "`jhead "$i" | awk '$1=="Date/Time" {print substr($4,1,2)}'`"h"
#d5=`identify -format "%[EXIFateTime]" "$i" | awk '{print
substr($2,4,2)}'`
d5=`jhead "$i" | awk '$1=="Date/Time" {print substr($4,4,2)}'`
if [ $d4 == "h" ] ; then
d4=""
fi
fi

# Lecture du nom de fichier, sans prefixe ni suffixe ni "_"
nn=""
if [ $Nom -ne 0 ] ; then
xx=$i
yy=${xx##*/}
zz=${yy%.*}
nn=" $(echo "$zz" | tr "_" " ")"
fi

# Lecture du commentaire
co=""
if [ $Comm -ne 0 ] ; then
# il semble que identify soit plus fiable pour le commentaire
co=" "`identify -format "%c" "$i"`
#co=" "`jhead "$i" | awk '$1=="Comment" {print
substr($0,16,length($0)-15)}'`
# protection des apostrophes avec un "\" : chaque "'" donne "\'"
#co=$(echo "$zz" | sed "s/'/\\\'/g")
fi

# Lecture de la largeur et hauteur de l'image
#x=`identify -format '%w' "$i"`
#y=`identify -format '%h' "$i"`
x=`jhead "$i" | awk ' $1=="Resolution" {print $3}' `
y=`jhead "$i" | awk ' $1=="Resolution" {print $5}' `
#set -x

# Calcul jc = taille du jeu de caracteres selon les proportions de
l'image
# $tcc = rapport de base en entree tel que jc = y/tcc si y/x=3/4
jcmin=20 # taille minimale absolue; par ailleurs tcc >= 5 deja vrai

# Pour avoir le meme aspect d'affichage quelle que soit l'image, on a :
# si y/x >= 3/4 : jc = y/tcc
# sinon : jc = y/tcc * (3/4) / (y/x) (l'image affichee diminue
en hauteur,
# il faut donc compenser en augmentant la taille des
caracteres)
# autrement dit :
# si 4y >= 3x : jc = y/tcc
# sinon : jc = y/tcc * 3x / 4y = 3x /tcc /4
# En fait la distinction points/pixels introduit un second rapport 4/3,
et on aura :
# si 4y >= 3x : jc = 4/3 * y/tcc
# sinon : jc = 4/3 * y/tcc * 3x / 4y = x /tcc

t1=$[$y * 4]
t2=$[$x * 3]
if [ $t1 -ge $t2 ] ; then
jc=$[$y * 4 / $tcc / 3]
else
jc=$[$x / $tcc]
fi

if [ $jc -lt $jcmin ] ; then
jc=$jcmin
fi

# positions des 2 ou 3 textes
# (1 ou 2 inscriptions noires + 1 blanche)
dc=$[($jc + 2) / 10] # decalage
if [ $dc -lt 2 ] ; then
dc=2
fi
if [ $dc -ge 2 ] ; then
dc2=$[$dc / 2]
else
dc2=0
fi
x=$[$y/45]
y1=$[$y-$x+$dc]
y1b=$[$y-$x+$dc2]
y2=$[$y-$x]
x1=$x
x1b=$[$x-$dc2]
x2=$[$x-$dc]
# Commandes d'incrustation des 2 textes
if [ $dc2 -gt 0 ] ; then
convert -font helvetica -fill black -pointsize $jc -draw "text
$x1,$y1 \"$d1$d2$d3$d4$d5$nn$co\"" $i /tmp/tempo2.jpg
convert -font helvetica -fill black -pointsize $jc -draw "text
$x1b,$y1b \"$d1$d2$d3$d4$d5$nn$co\"" /tmp/tempo2.jpg /tmp/tempo.jpg
convert -font helvetica -fill white -pointsize $jc -draw "text
$x2,$y2 \"$d1$d2$d3$d4$d5$nn$co\"" /tmp/tempo.jpg $i.jpg
rm -f /tmp/tempo2.jpg
else
convert -font helvetica -fill black -pointsize $jc -draw "text
$x1,$y1 \"$d1$d2$d3$d4$d5$nn$co\"" $i /tmp/tempo.jpg
convert -font helvetica -fill white -pointsize $jc -draw "text
$x2,$y2 \"$d1$d2$d3$d4$d5$nn$co\"" /tmp/tempo.jpg $i.jpg
fi
#set +x

# remise de la date d'origine
touch -r "$i" "$i.jpg" && rm -f "$i" && mv "$i.jpg" "$i"
rm -f /tmp/tempo.jpg
if [ $Bavard -eq 1 ] ; then
echo "Incrustation de$blabla dans $i"
cc=$[$cc + 1]
fi
done

if [ $Bavard -eq 1 ] ; then
if [ $cc -lt 2 ] ; then
echo "Incrustation de$blabla : $cc image modifiee"
else
echo "Incrustation de$blabla : $cc images modifiees"
fi
fi

________________________________

Mais mes connaissances de newbee ne me permettent pas de le faire
fonctionner.

Un petit coup de main svp pour la mise en oeuvre...

fr


Réponse avec citation
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Niouzes.org
Standard Sponsored Links

  #2 (permalink)  
Vieux 28/07/2008, 06h42
fr
 
Messages: n/a
Par défaut Re: insérer du texte dans un jpg

Bonjour,

Merci pour ta réponse.
Oui en fouillant j'avais trouvé PIL et en 4 lignes on insère un texte...
Grâce à toi et exif-py le reste est possible.

Cordialement

fr



"elGringo" <sebmegret***gmail.com> a écrit dans le message de news:
96c42ca3-60aa-46ff-934f-149fec80272a...oglegroups.com...
Bonjour,

malheureusement ton script n'est pas du python mais un script unix.
Je crois que tu t'es trompé de forum....

Néanmoins, pour dispenser la bonne parole et convertir les foules à
l'adoration du python, je te dévoile un secret: Tu peux faire la même
chose avec python (et surement plus facilement).

Pour cela, il te faut: un interpréteur python, le module PIL
(manipulation d' images) , os ou glob pour parcourir l'arborescence de
ton répertoire, le module pour lire les exif à télécharger sur
http://sourceforge.net/projects/exif-py/

Quelques lectures des saintes écritures pythoniques (des tutoriaux
pour ainsi dire) glanés via le saint Google et hop, te voilà converti.
Ne reste plus qu'à écrire le script et si ta foi vient à s'amoindrir
devant les difficultés, tu peux toujours poster tes prières sur les
forums python, dont les usagers sauront partager ta peine et te
designer le droit chemin.


ps: si tu n'es pas python-ready et que tu t'es simplement trompé de
forum, tu devrais aussi pouvoir le faire avec ImageMagick

Bon python.

psps: j'ai loupé la messe avec tout ça, bon ben tant pis, je fais
faire un peu de python ....


Réponse avec citation
 
Réponse
Tags: , ,



Outils de la discussion
Modes d'affichage

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Discussions similaires

Discussion Auteur Forum Réponses Dernier message
Existe-t-il un code espace insécable à utiliser dans la Source contrôle d'une zone de texte ? Céline Brien Newsgroup microsoft.public.fr.access 0 11/06/2008 14h35
Insérer l'heure dans une cellule rthompson Newsgroup microsoft.public.fr.excel 4 26/03/2008 13h34
Insérer le nom du fichier .jpg dans la photo Jean-Luc Cornet Newsgroup microsoft.public.fr.powerpoint 2 18/12/2007 15h52
Insérer des silences dans un .mp3 Gump Newsgroup fr.comp.os.ms-windows 5 08/11/2007 09h33
insérer une valeur dans un MsgBox hako Newsgroup microsoft.public.fr.dotnet 2 06/12/2006 16h50


Fuseau horaire GMT. Il est actuellement 07h02.

Italiano - German - English - Español


Édité par : vBulletin® version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc. Tous droits réservés.
Version française #13 par l'association vBulletin francophone


Politique - Droit - Philosophie - Football - Medicine - Française - Bricolage - Photo - Mac Os X - Divers - Physique - Jardinage
Mecanique - Moto - Photographie - Rail - Route - Aviation - Cinema - Linux - Psychanalyse - Finance - Enigmes - Rugby
Environnement - Histoire - Programmes TV - Education - Travail - Voyages - Windows - Immobilier - Cuisine
Windows XP - Excel - Word - Outlook - Access - Internet Explorer - Office - Vista

Page generated in 0,35418 seconds with 11 queries