Voilou, je cherche a convertir des images en images en niveaux de gris, le tout de maniere recursive, j'ai fais des recherche sur le net, le man de imagemagick, et le seule truc que je trouve c'est comment les convertir en monochrome.
Publicité
Posté le 15-05-2005 à 20:44:11
jlighty
Posté le 15-05-2005 à 21:02:22
dans le man il est indiqué (ligne ~567)que la conversion en niveaux de gris se fait par:
-colorspace GRAY
Message édité par jlighty le 15-05-2005 à 21:02:40
flashball
Posté le 15-05-2005 à 21:10:19
grand thx et pour le mode recursif on fait comment ?
flashball
Posté le 15-05-2005 à 21:24:11
ca marche pas : je fais mogrify share.png -colorspace GRAY et share.png reste en couleur
merci mais moi je veux que l'image soit seulement convertie et non que une deuxieme image soit cree, et la je ne vois pas comment integrer ca dans un script sh ou bash recursif en plus
Message édité par flashball le 22-05-2005 à 16:48:07
jlighty
Posté le 22-05-2005 à 16:56:25
pour obtenir une simple conversion :
convert "$nom" -colors 16 -colorspace "GRAY" "tmp_$nom"
puis mv "tmp_$nom" "$nom"
il est vrai que la méthode utilise un fichier temp mais comme son nom l'indique, il est temporaire
flashball
Posté le 22-05-2005 à 17:14:49
dsl mais je sais pas scripter, quelqu'un aurait l'aimable gentillesse de me le faire ?
jlighty
Posté le 22-05-2005 à 17:25:56
déjà quels sont les chemins des répertoires où tu veux convertir tes images ?
flashball
Posté le 22-05-2005 à 17:30:56
voila en lisant le man de sh ca donne ca et ca marche:
#!bin/sh
for nom in * do convert $nom -colorspace GRAY tmp_$nom mv tmp_$nom $nom done
et avec le mode recursif ?
(j'ai un dossier X qui contient des sous dossiers ... avec des images, je voudrais que l'on puisse mettre en argument du script le dossier X pour que tout les images contenu dedans soient converties
Message édité par flashball le 22-05-2005 à 17:31:35
Publicité
Posté le 22-05-2005 à 17:30:56
jlighty
Posté le 22-05-2005 à 17:39:19
un truc tout simple :
si tu es sûr que tes repertoires et fichiers ne contienent aucun espace :
utilise la commande find :
Code :
for fichier in `find $mon_dossier -type f -name "*.png"`; do
bien sûr fais un backup des images avant d'exécuter le script on ne sait jamais
Message édité par jlighty le 22-05-2005 à 17:40:40
flashball
Posté le 22-05-2005 à 17:50:21
marche pas : messages
Code :
convert: unable to open image `tmp_./16x16/apps/kdat.png': Aucun fichier ou répertoirede ce type.
mv: ne peut évaluer `tmp_./16x16/apps/kdat.png': Aucun fichier ou répertoire de ce type
convert: unable to open image `tmp_./16x16/apps/kweather.png': Aucun fichier ou répertoire de ce type.
mv: ne peut évaluer `tmp_./16x16/apps/kweather.png': Aucun fichier ou répertoire de cetype
convert: unable to open image `tmp_./16x16/apps/kjobviewer.png': Aucun fichier ou répertoire de ce type.
mv: ne peut évaluer `tmp_./16x16/apps/kjobviewer.png': Aucun fichier ou répertoire de ce type
convert: unable to open image `tmp_./16x16/apps/go.png': Aucun fichier ou répertoire de ce type.
mv: ne peut évaluer `tmp_./16x16/apps/go.png': Aucun fichier ou répertoire de ce type
convert: unable to open image `tmp_./16x16/apps/applixware.png': Aucun fichier ou répertoire de ce type.
........
jlighty
Posté le 22-05-2005 à 18:04:02
il faut peut être faire un "cd $mon_dossier" avant la boucle for
le script est lancé depuis où ? et qu'as tu mis à la place de $mon_dossier (ou la valeur de $mon_dossier" ?
Message édité par jlighty le 22-05-2005 à 18:06:34
flashball
Posté le 22-05-2005 à 18:08:47
j'ai laissé le sript tel quel et je l'ai lancé avec la commande :
mon_dossier=ledossierquivabien sh notrescript
Message édité par flashball le 22-05-2005 à 18:09:08
jlighty
Posté le 22-05-2005 à 18:11:44
Code :
#!/bin/sh
mon_dossier=$1
for i.......
comment l'appeler :
sh script <le chemin complet du repertoire>
flashball
Posté le 22-05-2005 à 18:15:32
memes erreurs apres modif
flashball
Posté le 22-05-2005 à 18:17:47
ca serait pas plus simple de lister tout les sous dossier puis de faire avec un for et par la suite un cd ?
jlighty
Posté le 22-05-2005 à 18:21:07
la commande find est déjà récursive.
Tu peux me donner les informations suivantes :
- chemin complet du repertoire où sont stockées les images - la ligne de commande exacte que tu tapes pour lancer le script
- le contenu du script