Andesi - forum

Forum francophone pour Debian

Vous n'êtes pas identifié(e).

#1 15/11/2009 13:42:38

damo
Membre
Lieu : Loire
Inscription : 20/01/2009
Messages : 62

[Résolu] Convertir dans plusieurs sous-réps des images png en jpg

Bonjour

Je suis en train de créer un script qui me permet de convertir plusieurs images dans plusieurs sous-répertoires

$ cd /home/damien/test/

Dans ce répertoire il y a 3 sous-répertoires appelés 1,2 et 3.

Voici le script que je nomme png2jpgtest

#!/bin/bash

# Si on a moins d'un argument, on quitte
[ $# -ne 1 ] && echo 'J'\''ai besoin d'\''un argument !' && exit 1
# Si le répertoire source n'existe pas, on quitte
[ ! -d "$1" ] && echo 'J'\''ai besoin d'\''un répertoire de source valide !' && exit 1
SOURCE="$1"

find "$SOURCE" -iname 'test.png' -exec convert -quality 80 test.jpg \;

J'éxécute le script avec la commande

$ sh png2jpgtest /home/damien/test

Et voici le résultat

convert: nom de fichier d'image absent `test.jpg' @ convert.c/ConvertImageCommand/2806.
convert: nom de fichier d'image absent `test.jpg' @ convert.c/ConvertImageCommand/2806.
convert: nom de fichier d'image absent `test.jpg' @ convert.c/ConvertImageCommand/2806.

Besoin d'aide SVP
Merci

Dernière modification par damo (09/01/2010 21:06:32)

Hors ligne

#2 15/11/2009 22:47:30

ledub
Membre
Lieu : Creil (60)
Inscription : 22/04/2003
Messages : 4 545

Re : [Résolu] Convertir dans plusieurs sous-réps des images png en jpg

Je ne pense pas que tu puisses pas faire plus compliqué comme script !!

#!/bin/bash
# Si on a moins d'un argument, on quitte
if [[ $# -ne 1 ]]
then
  echo "J'ai besoin d'un argument !"
  exit 1
fi
SOURCE="$1"
# Si le répertoire source n'existe pas, on quitte
if [[ ! -d ${SOURCE} ]]
then
  echo  "J'ai besoin d'un répertoire de source valide !'
  exit 1
fi
find "$SOURCE" -iname 'test.png' -exec convert -quality 80 test.jpg \;

C'est cette dernière ligne que je ne comprends pas !!!!
Tu cherches uniquement un fichier qui se nomme "test.png" ?? normalement un exec de find se termine par une "{} \;" ce que tu ne fais pas !!!
Pour moi le find, je le vois comme cela

find ${SOURCE} -iname "*.png" -exec convert -quality 80 {} test-{}.jpg \;

... quoique c'est à tester !!!

LeDub correcteur scriptique ?

Dernière modification par ledub (15/11/2009 22:48:02)


« Ne doutez pas qu'un petit nombre de personnes déterminées puisse changer le monde. En fait, ça a même toujours marché comme ça.»
Margaret Mead
---
VeoSearch est un moteur de recherche solidaire qui permet de financer des projets associatifs de développement durable par vos recherches Internet. Utilisez-le !!!

Hors ligne

#3 16/11/2009 01:36:45

ioguix
Administrator
Lieu : Paris
Inscription : 25/04/2003
Messages : 3 945

Re : [Résolu] Convertir dans plusieurs sous-réps des images png en jpg

Oui oui, je connais à peu près bien convert pour l'utiliser dans tous mes scripts de gestion d'image et il te manque effectivement le fichier de destination ou original dans ta commande.

Le premier fichier précisé est la source, ici ce sera le {} de find, le second la destination.


[email protected]
"Contrairement aux chasseurs qui, eux, ne sont pas des lapins, les pollueurs, eux sont des ordures. - Philippe Geluck, Le chat"
gpg: 0828C222

Hors ligne

#4 16/11/2009 20:58:07

damo
Membre
Lieu : Loire
Inscription : 20/01/2009
Messages : 62

Re : [Résolu] Convertir dans plusieurs sous-réps des images png en jpg

Voici comment j'ai écrit le script

#!/bin/bash

# Si on a moins d'un argument, on quitte
[ $# -ne 1 ] && echo 'J'\''ai besoin d'\''un argument !' && exit 1
# Si le répertoire source n'existe pas, on quitte
[ ! -d "$1" ] && echo 'J'\''ai besoin d'\''un répertoire de source valide !' && exit 1
SOURCE="$1"

find "$SOURCE" -iname 'test.png' -exec convert {} -quality 85 {}.jpg \;
find "$SOURCE" -iname 'test.png.jpg' -exec rename 's/png.jpg/jpg/' test.jpg {} \;
find "$SOURCE" -iname 'test.png' -exec rm -f test.png {} \;

Merci

Hors ligne

Pied de page des forums