#1 Le 21/12/2019, à 17:07
- kalene
Transfère d'images convertie dans un dossier (shell script) [Résolu]
Bonjour,
J'ai un problème dans mon code j'ai l'impression qu'il n'arrive pas a trouver le dossier ./Images. Ou est l’erreur ?
dir="./Images"
for image in "$dir"/*.png *.PNG *.jpg *.jpeg *.gif
do convert $image -thumbnail '400x400>' miniatures/$image
done
Ce que je cherche a faire c'est de prendre toutes les images dans le dossier /Images et de les convertir dans /miniatures
La prochaine étape est de rentrer directement le repertoire
read -p 'Enter your repertory : ' repertory
for image in "$repertory"/*.png *.PNG *.jpg *.jpeg *.gif
do convert $image -thumbnail '400x400>' miniatures/$image
done
Merci a vous d'avance !
-
Dernière modification par kalene (Le 21/12/2019, à 19:43)
Hors ligne
#2 Le 21/12/2019, à 17:24
- kamaris
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Pour lister les fichiers dans la boucle for c'est :
"$dir"/*.{png,PNG,jpg,jpeg,gif}
Hors ligne
#3 Le 21/12/2019, à 17:41
- kalene
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Ah merci beaucoup Kamaris !! j'avais vus qu'on pouvait le faire comme ça, mais je pensais que ça revenait au meme ma faute de me pas avoir test ...
Hors ligne
#4 Le 21/12/2019, à 18:05
- kalene
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Apres modification du code ca ne fonctionne toujours pas. il y a une autre erreur non ?
#!/bin/bash
dir="./Images"
for image in "$dir"/*.{png,PNG,jpg,jpeg,gif}
do convert $image -thumbnail '200x200>' miniatures/$image
done
il me dise :
convert-im6.q16: unable to open image `./Images/*.png': No such file or directory @ error/blob.c/OpenBlob/2874.
convert-im6.q16: no images defined `miniatures/./Images/*.png' @ error/convert.c/ConvertImageCommand/3258.
convert-im6.q16: unable to open image `./Images/*.PNG': No such file or directory @ error/blob.c/OpenBlob/2874.
convert-im6.q16: no images defined `miniatures/./Images/*.PNG' @ error/convert.c/ConvertImageCommand/3258.
convert-im6.q16: unable to open image `miniatures/./Images/30x60-gris.jpg': No such file or directory @ error/blob.c/OpenBlob/2874.
convert-im6.q16: unable to open image `./Images/*.jpeg': No such file or directory @ error/blob.c/OpenBlob/2874.
convert-im6.q16: no images defined `miniatures/./Images/*.jpeg' @ error/convert.c/ConvertImageCommand/3258.
convert-im6.q16: unable to open image `./Images/*.gif': No such file or directory @ error/blob.c/OpenBlob/2874.
convert-im6.q16: no images defined `miniatures/./Images/*.gif' @ error/convert.c/ConvertImageCommand/3258.
Hors ligne
#5 Le 21/12/2019, à 18:13
- kamaris
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Il ne semble pas y avoir de fichiers .{png,PNG,jpeg,gif} dans ton répertoire Images.
Sinon tu peux utiliser la commande basename pour séparer les noms de fichiers des répertoires dans la boucle for :
do convert "$image" -thumbnail '200x200>' "miniatures/$(basename "$image")"
Hors ligne
#6 Le 21/12/2019, à 18:34
- kalene
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Merci encore Kamaris la ça fonctionne
Mais certaine images ne sont pas convertie je ne comprend pas seulement 13/23, enfin si j'ai trouvé c'est quand elles ont des espaces dans leurs noms. Ya moyen d'y remédier ?
Hors ligne
#7 Le 21/12/2019, à 18:45
- kamaris
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Tu as bien mis des guillemets autour des variables comme j'ai mis en #5 ?
Hors ligne
#8 Le 21/12/2019, à 19:06
- kalene
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Oui
#!/bin/bash
dir="./Images"
for image in "$dir"/*.{png,PNG,jpg,jpeg,gif}
do convert $image -thumbnail '400x400>' "miniatures/$(basename "$image")"
done
Hors ligne
#9 Le 21/12/2019, à 19:13
- kamaris
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Et non !
do convert "$image" …
Hors ligne
#10 Le 21/12/2019, à 19:19
- kalene
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Ah my bad xDDD
Bon bah tous fonctionne alors merci encore
Je débute dans le domaine alors je risque de bombarder ce forum xD. Mais je recherche beaucoup avant mais au d'un moment je demande de l'aide !
Merci !
Code complet :
#!/bin/bash
if [ -z $1 ]
then
sortie='galerie.html'
echo "Default Galerie"
else
sortie=$1
echo "$1"
fi
echo '' > $sortie
if [ ! -e miniatures ]
then mkdir miniatures
fi
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Ma galerie</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
a img { border:0; }
</style>
</head>
<body>
<p>' >> $sortie
while [ ! -e "$repertory" ] || [ -z "$repertory" ]
do read -p 'Enter your repertory : ' repertory
if [ -z "$repertory" ]
then
echo "Inserer du texte"
else
echo "Le chemin entrer n'est pas valide"
fi
done
for image in "$repertory"/*.{png,PNG,jpg,jpeg,gif}
do convert "$image" -thumbnail '200x200>' "miniatures/$(basename "$image")"
echo '<a href="'$image'"><img src="miniatures/'$(basename "$image")'" alt="" /> </a> '>> $sortie
done
echo'
</p>
</body>
</html>' >> $sortie
Dernière modification par kalene (Le 21/12/2019, à 19:21)
Hors ligne
#11 Le 21/12/2019, à 19:57
- kamaris
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Je débute dans le domaine alors je risque de bombarder ce forum xD.
Pas de problème, tu peux y aller, il y aura toujours du monde pour te répondre ici
Quelques petites suggestions :
mieux protéger les variables :
if [ -z "$1" ] echo … > "$sortie"
utiliser -d pour les tests sur répertoires :
if [ ! -d miniatures ] then mkdir miniatures fi
utiliser mkdir -p plutôt que le test qui précède (voir man mkdir)
la boucle while pour l'acquisition du nom du répertoire images devrait être revue, par exemple comme ça :
while true; do read -p 'Enter your directory : ' directory if [ -z "$directory" ]; then echo "Inserer du texte" continue fi if [ -d "$directory" ]; then break else echo "Le chemin entré n'est pas valide"; fi done
Hors ligne
#12 Le 21/12/2019, à 20:13
- kalene
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Très bien c'est pris en compte, j'ai tout changé
Merci de nouveau, ça m'aide beaucoup t'es suggestions d'amelioration !
Hors ligne
#13 Le 21/12/2019, à 20:24
- Watael
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
kamaris,
quand on propose une substitution d'accolades, on n'emploie plus basename, mais des substitutions de paramètres !
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#14 Le 21/12/2019, à 20:30
- kalene
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Comment ça des substitutions ? j'ai pas compris ? on remplace base name par quoi du coup ?
Hors ligne
#15 Le 21/12/2019, à 20:41
- kamaris
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
En exercice
Lire
man -P 'less -p "^\s+Parameter Expansion"' bash
et remplacer la commande basename par son équivalent en bash
Hors ligne
#16 Le 21/12/2019, à 20:47
- kalene
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
J'arrive pas a cerner le truc donc dans l'exemple de :
"miniatures/$(basename "$image")"
si je le change en bash ça donne quoi ? ^^
Hors ligne
#17 Le 21/12/2019, à 21:08
- nany
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Bonjour,
J'arrive pas a cerner le truc donc dans l'exemple de :
"miniatures/$(basename "$image")"
si je le change en bash ça donne quoi ? ^^
"miniatures/${image##*/}"
Et, pour vérifier tes scripts avant de venir poser des questions ici, use et abuse de ShellCheck.
En ligne
#18 Le 21/12/2019, à 21:23
- kalene
Re : Transfère d'images convertie dans un dossier (shell script) [Résolu]
Ok ça marche Nany, merci
Genial cette outil !
Dernière modification par kalene (Le 21/12/2019, à 21:33)
Hors ligne