Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1505 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  bash et imagemagick

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

bash et imagemagick

n°928883
kaillou38
mouton à numéro
Posté le 30-06-2007 à 17:36:18  profilanswer
 

bonjour,
 
j'ai un probleme de bash :
j'ai un paquet d'images a redimensionner. le probleme, c'est que pas une ne fait la meme taille, ni meme le meme ratio h/w
 
donc ce que je veux, c'est juste qu'elles fassent environ 1000px su le coté le plus grand
 
j'utilise imagemagick et la fonction de conversion suivante
 

Code :
  1. convert image.jpg -quality 80 -resize %rapport image.jpg


 
 
bon, je fais une partie de mon script en me basant sur ce que j'ai pu trouver.
a part la fonction de conversion, ca marche (bon, c'est pas non plus compliqué)
je me doute que c'est un probleme de guillemet ou de quote, mais j'ai essayé plusieurs trucs et je trouve pas
 

Code :
  1. #!/bin/bash
  2. for element in * ; do
  3.     extension=`echo $element |awk -F "." '{print $NF}'`
  4.     case $extension in
  5.         JPG|jpg|jpeg|JPEG )
  6.             echo traitement image : $element
  7.                 tx=`identify -format "%w" "${element}"`
  8.                 ty=`identify -format "%h" "${element}"`
  9.                 dif=`echo $(($tx-$ty))`
  10.                 if [ $dif -ge 0 ]; then
  11.                     if [ $tx -ge "1024" ];thenou
  12.                         rapport=`echo $((102400/$tx))`
  13.                         convert $element -quality 80 -resize "${rapport}"'%' 'th_'"${element}"
  14.                     fi
  15.                 else
  16.                     if [ $ty -ge "1024" ];then
  17.                         rapport=`echo $((102400/$ty))`
  18.                         convert $element -quality 80 -resize "${rapport}"'%' 'th_'"${element}"
  19.                     fi
  20.                 fi
  21.                 ;;
  22.         * );;
  23.     esac
  24. done


 
 
si quelqu'un peut eclairer ma lanterne, je lui en serais gré


---------------
ras
mood
Publicité
Posté le 30-06-2007 à 17:36:18  profilanswer
 

n°929164
kaillou38
mouton à numéro
Posté le 02-07-2007 à 10:01:56  profilanswer
 

personne [:cupra]


Message édité par kaillou38 le 02-07-2007 à 11:23:57

---------------
ras
n°929187
Taz
bisounours-codeur
Posté le 02-07-2007 à 10:39:20  profilanswer
 

bash -eux

n°929196
wedgeant
Da penguin inside
Posté le 02-07-2007 à 10:45:03  profilanswer
 

1er point: remplace tes `...` par des $(...)
2e point: mets tes variables en majuscule: $bla -> $BLA
3e point: place tes variables $BLA entre quotes et avec des accolades: "${BLA}"

 

Après, on discutera :o

 

[:cupra]


Message édité par wedgeant le 02-07-2007 à 10:45:51

---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°929239
kaillou38
mouton à numéro
Posté le 02-07-2007 à 12:54:23  profilanswer
 

merci de ta reponse :

 
  • 1er point : c'est pour mes $BLA=`echo machin` que tu dis ca?

       ca me semblait marcher pourtant (bon j'ai modifié)

  • 2eme point : ca a une reelle importance, ou c'est juste pour facilement visualiser une variable et ce qui n'en est pas une? (bon, j'ai modifier aussi)
  • 3eme point : c'etait pas deja fait? (enfin au moins pour celles qui peuvent poser probleme [:cupra]


voila, j'en suis la :

 
Code :
  1. #!/bin/bash
  2. for ELEMENT in * ; do
  3.     EXTENSION=$(echo $ELEMENT |awk -F "." '{print $NF}')
  4.     case $EXTENSION in
  5. JPG|jpg|jpeg|JPEG )
  6.     echo traitement image : $ELEMENT
  7.     TX=$(identify -format "%w" "${ELEMENT}" )
  8.     TY=$(identify -format "%h" "${ELEMENT}" )
  9.     DIF=$(echo $(($TX-$TY)))
  10.      
  11.     if [ $DIF -ge 0 ]; then
  12.  if [ $TX -ge "1024" ];then
  13.      rapport=$(echo $((102400/$TX)))
  14.      echo $rapport
  15.      convert $element -quality 80 -resize "${RAPPORT}"'%' 'th_'"${ELEMENT}"
  16.  fi
  17.     else
  18.  if [ $TY -ge "1024" ];then
  19.      rapport=$(echo $((102400/$TY)))
  20.      echo $rapport
  21.      convert $element -quality 80 -resize "${RAPPORT}"'%' 'th_'"${ELEMENT}"
  22.  fi
  23.     fi
  24.     ;;
  25.              * );;
  26.     esac
  27. done
 

le message d'erreur qui en resulte est le suivant :

 
Citation :

convert: missing an image filename `th_ZZFacture_Bonnerue.jpg'.

 

je me doute bien que c'est un probleme de concatenation, j'ai essayé d'elenver les simples quote pourvoir, meme resultat

 

j'ai donc simplement essayé de concatené avant pour le %

 
Code :
  1. #!/bin/bash
  2. for ELEMENT in * ; do
  3.     EXTENSION=$(echo $ELEMENT |awk -F "." '{print $NF}')
  4.     case $EXTENSION in
  5. JPG|jpg|jpeg|JPEG )
  6.     echo traitement image : $ELEMENT
  7.     TX=$(identify -format "%w" "${ELEMENT}" )
  8.     TY=$(identify -format "%h" "${ELEMENT}" )
  9.     DIF=$(echo $(($TX-$TY)))
  10.      
  11.     if [ $DIF -ge 0 ]; then
  12.  if [ $TX -ge "1024" ];then
  13.      RAPPORT=$(echo $((102400/$TX)))
  14.      RAPPORT="${RAPPORT}"'%'
  15.      echo $RAPPORT
  16.      convert $ELEMENT -quality 80 -resize "${RAPPORT}" 'th_'"${ELEMENT}"
  17.  fi
  18.     else
  19.  if [ $TY -ge "1024" ];then
  20.      RAPPORT=$(echo $((102400/$TY)))
  21.      RAPPORT="${RAPPORT}"'%'
  22.      echo $RAPPORT
  23.      convert $ELEMENT -quality 80 -resize "${RAPPORT}" 'th_'"${ELEMENT}"
  24.  fi
  25.     fi
  26.     ;;
  27.              * );;
  28.     esac
  29. done
 

et ca ca marche...

 

donc, pour voir, j'ai essayé pour voir de mettre un antilash avant le % dans la premiere version de ce que j'ai fait, mais ca marchait pas :(

 

mais bon, j'ai une version qui marche, ca me suffit :D


Message édité par kaillou38 le 02-07-2007 à 12:54:42

---------------
ras
n°929247
wedgeant
Da penguin inside
Posté le 02-07-2007 à 13:11:36  profilanswer
 

edit²: essaye de mettre

Code :
  1. set -x
  2. ton_code
  3. set +x
 

Et regarde la cause du plantage


Message édité par wedgeant le 02-07-2007 à 13:13:58

---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°929253
franceso
Posté le 02-07-2007 à 13:35:02  profilanswer
 

Le problème, c'est que dans ton premier script, tu mettais "convert $element" au lieu de "convert $ELEMENT".
 
Ta concaténation de '%' n'a rien a voir là dedans AMHA...


---------------
TriScale innov
n°929254
wedgeant
Da penguin inside
Posté le 02-07-2007 à 13:37:07  profilanswer
 

Et tu devrais mettre TOUTES tes variables entre quote :o

 

edit: au passage, [:pato el canardo] toi ;)

Message cité 1 fois
Message édité par wedgeant le 02-07-2007 à 13:37:27

---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°929257
franceso
Posté le 02-07-2007 à 13:39:52  profilanswer
 

wedgeant a écrit :

Et tu devrais mettre TOUTES tes variables entre quote :o

Espèce d'intaygriste du shell :o
 
[:cupra]
 
 

wedgeant a écrit :

edit: au passage, [:pato el canardo] toi ;)

[:zytra]  


---------------
TriScale innov
n°929262
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 02-07-2007 à 13:53:38  profilanswer
 

franceso a écrit :

Le problème, c'est que dans ton premier script, tu mettais "convert $element" au lieu de "convert $ELEMENT".
 
Ta concaténation de '%' n'a rien a voir là dedans AMHA...


 
en bash ${string%substring} ca strip substring de string... bon ok ca a ptet pas de rapport, mais jm'en fous jle dis quand même :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
mood
Publicité
Posté le 02-07-2007 à 13:53:38  profilanswer
 

n°929265
wedgeant
Da penguin inside
Posté le 02-07-2007 à 13:54:57  profilanswer
 

Xavier_OM a écrit :

en bash ${string%substring} ca strip substring de string... bon ok ca a ptet pas de rapport, mais jm'en fous jle dis quand même :o


Ca a pas de rapport car son "%" est en dehors de ${...} :o


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  bash et imagemagick

 

Sujets relatifs
[résolu] Bash : parcours d'un répertoire et suppression des "*~"[bash]supprimer balises html
[BASH] Extraire une URL d'un fichier (probleme avec grep)(BASH) Ajouter des droits a un utilisateur
BASH réponse à une questionBASH remplacer une chaine par une autre en suivant un motif.
remplacement variable script bash[Bash] Le C(r|)on et les scripts
Bash] Boucle while - export variable[BASH] Ajouter extension via feedback de commande file
Plus de sujets relatifs à : bash et imagemagick


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR