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 02/01/2012, à 17:30

Neko62

[RESOLU] traitement par lot redimensionnement automatique d'image

Bonjour à tous et meilleurs voeux

voilà je souhaiterais effectuer un traitement par lot pour redimenssionner un ensemble d'images automatiquement MAIS ces clichés sont stockés dans une architecture de dossiers bien spécifique ( année / mois / jour ) ?
Donc je voudrais que ce traitement par lot en ligne de commande ou non aille piocher dans chaque sous répertoire les clichés et recrée   une nouvelle structure de dossiers identique à celle d'origine avec les clichés redimenssionnés dedans.

Une idée  pour m'aider ? Un programme adapté ? Un plug-in pour Gimp ?

D'avance merci.

Dernière modification par Neko62 (Le 03/01/2012, à 22:25)

Hors ligne

#2 Le 02/01/2012, à 18:51

Sebien

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Selon la taille du dossier parent et tous les dossiers enfants et des images originales, je ferais :
1° copie intégrale du répertoire et des photos + redimensionnement des photos copiées (si le dossier n'est pas trop lourd)
2° recréer l'arborescence seule puis redimensionner les photos :

cd \Mon\Chemin\Vers\Mon\Répertoire\Parent
find . -type d -printf "mkdir \"%p\"\n" > /tmp/ScriptCreationArborescence.sh
chmod +x /tmp/ScriptCreationArborescence.sh
cd \Mon\Chemin\Vers\Mon\Nouveau\Répertoire\Parent
/tmp/ScriptCreationArborescence.sh

Pour le redimensionnement je conseil ImageMagick et toute la doc qui va bien sur le web.

Cordialement.

Hors ligne

#3 Le 02/01/2012, à 19:16

strokkur

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Phatch est pas mal également pour des traitements par lot

Hors ligne

#4 Le 02/01/2012, à 19:21

mydjey

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Bonsoir,

Ici les logiciels de traitement par lot : http://doc.ubuntu-fr.org/photo#traitement_par_lots

Hors ligne

#5 Le 02/01/2012, à 20:37

pingouinux

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Bonsoir,
Voici une proposition, avec convert, pour les images .jpg (mais ce n'est qu'un exemple) :

#! /bin/bash

rep_orig=~/Photos
rep_dest=~/Photos_modifiees

[ -d "$rep_dest" ] || mkdir "$rep_dest"

cd "$rep_orig"

suf=jpg
for image in $(find -iname \*.$suf)
do
   rep=$(dirname "$image"); bsn=$(basename "$image")
   mkdir -p "$rep_dest/$rep"
 # Traitement de l'image
   convert -resize 1024x768 $image "$rep_dest/$rep/$bsn"
done

Dernière modification par pingouinux (Le 02/01/2012, à 20:44)

Hors ligne

#6 Le 02/01/2012, à 23:26

Neko62

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Merci à tous pour toutes ces possibilités que je vais tester rapidement.
dernière  chose mon dimensionnement doit aboutir à des images de 720 x 480 pixels. Mais comment m'assurer que les 720 pixels seront attribués à la largeur pour un cliché au format paysage  et à la hauteur pour un cliché au format portrait quand je travaille  en ligne de commande  ( c'est du jpg ) ?
Merci

Hors ligne

#7 Le 03/01/2012, à 00:06

mydjey

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Pour t'en assurer le meilleur moyen c'est de faire un essai sur une ou deux images de chaque format.

Hors ligne

#8 Le 03/01/2012, à 08:05

pingouinux

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Version améliorée du #5, tenant compte de l'orientation des photos :

#! /bin/bash

rep_orig=~/Photos
rep_dest=~/Photos_modifiees

mkdir -p "$rep_dest"

cd "$rep_orig"

suf=jpg
W=720; H=480

for image in $(find -iname \*.$suf)
do
 # Taille de l'image
   wh=$(identify "$image"|awk '{for (i=1;i<=NF;i++) {if($i=="JPEG") print $(i+1)}}')
   w=$(cut -dx -f1 <<<$wh)
   h=$(cut -dx -f2 <<<$wh)
   [[ $w -gt $h ]] && WH=$W"x"$H || WH=$H"x"$W

   rep=$(dirname "$image"); bsn=$(basename "$image")
 # Création des nouveaux répertoires si absents
   mkdir -p "$rep_dest/$rep"
 # Traitement de l'image
   convert -resize $WH "$image" "$rep_dest/$rep/$bsn"
done

Corrigé : Ajout de " de part et d'autre de $image

Dernière modification par pingouinux (Le 03/01/2012, à 21:45)

Hors ligne

#9 Le 03/01/2012, à 21:05

Neko62

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Merci pingoulnux,

la version n°1 fonctionne mais ne respecte pas l'orientation du cliché.
Et malheureusement la version n°2 plante avec le message suivant :
"redim_2: 17: Syntax error: redirection unexpected"

Une idée ?

Hors ligne

#10 Le 03/01/2012, à 21:25

pingouinux

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Je suis perplexe, Essaye en remplaçant ces lignes :

   wh=$(identify $image|awk '{for (i=1;i<=NF;i++) {if($i=="JPEG") print $(i+1)}}')
   w=$(cut -dx -f1 <<<$wh)
   h=$(cut -dx -f2 <<<$wh)

par celles-ci :

   identify $image
   wh=$(identify $image|awk '{for (i=1;i<=NF;i++) {if($i=="JPEG") print $(i+1)}}')
   echo "wh=$wh="
   w=$(echo $wh | cut -dx -f1)
   h=$(echo $wh | cut -dx -f2)

Il va y avoir des impressions supplémentaires qui, je l'espère, permettront d'y voir plus clair.

Hors ligne

#11 Le 03/01/2012, à 21:49

Neko62

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

en remplacant ca donne une site infinie de message du type :

/12_decembre/2005_12_06_Berck/IMG_1120.jpg JPEG 3456x2304 3456x2304+0+0 8-bit DirectClass 4.068MB 0.000u 0:00.000
wh=3456x2304=
redim_2: 28: [[: not found
./12_decembre/2005_12_06_Berck/IMG_1118.JPG JPEG 3456x2304 3456x2304+0+0 8-bit DirectClass 2.379MB 0.000u 0:00.000
......................

Hors ligne

#12 Le 03/01/2012, à 22:02

pingouinux

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Une suite infinie, tu exagères peut-être un peu... Il y a tout au plus quelques lignes par photo.
On dirait que la syntaxe bash n'est pas reconnue chez toi. Voici le script complet modifié en conséquence :

#! /bin/bash

rep_orig=~/Photos
rep_dest=~/Photos_modifiees

mkdir -p "$rep_dest"

cd "$rep_orig"

suf=jpg
W=720; H=480

for image in $(find -iname \*.$suf)
do
 # Taille de l'image
   wh=$(identify "$image"|awk '{for (i=1;i<=NF;i++) {if($i=="JPEG") print $(i+1)}}')
   w=$(echo $wh | cut -dx -f1)
   h=$(echo $wh | cut -dx -f2)
   [ $w -gt $h ] && WH=$W"x"$H || WH=$H"x"$W

   rep=$(dirname "$image"); bsn=$(basename "$image")
 # Création des nouveaux répertoires si absents
   mkdir -p "$rep_dest/$rep"
 # Traitement de l'image
   convert -resize $WH "$image" "$rep_dest/$rep/$bsn"
done

Hors ligne

#13 Le 03/01/2012, à 22:25

Neko62

Re : [RESOLU] traitement par lot redimensionnement automatique d'image

Impec !
Merci beaucoup !
Je vais gaver mon Galaxy S2 de clichés !
Bonne soirée

Hors ligne