#1 Le 29/10/2008, à 19:56
- polyopath
[Resolu] Script de redimentionnement par lot de wallpaper
Salut a tous,
Etant ferru de belles images en fond d'ecran, j'en ai accumulé un nombre considerable au fil du temps...
Le probleme est que beaucoup de celles-ci ont une resolution superieure a celle de mon ecran, et que d'autres ont une resolution bien inferieure a celui-ci m'empechant d' utiliser le mode "Redimentionné" sous peinne d'affecter gandement la qualitée d'affichage.
Je me suis donc mis a chercher un programme ou un script qui me redimmentionnerait seulement les images depassant la resolution de mon ecran pour que celle-ci pussent y etre affichées entierement tout en preservant le ratio.
Mais malheuresement mes recherches sont infructueuses, je me suis donc mis en tête d'ecrire un script utilisant imageMagick pour la collecte des infos de l'image et son redimentionnement si elle n'est pas inferieure a la resolution de mon ecran...
Etant debutant dans la creation de scripts (mais alors denué de toutes conaissances dans ce domainne), je bloque deja sur la recuperation de la resolution de l'image avec imageMagick.
J'utilise la commande "identify" ce qui me donne:
$ identify ~/Images/Wallpapers/4040bb718dccdd7d.jpg
Images/Wallpapers/4040bb718dccdd7d.jpg JPEG 500x757 500x757+0+0 DirectClass 8-bit 120.344kb
Donc avec un petit "awk" :
$ identify ~/Images/Wallpapers/4040bb718dccdd7d.jpg | awk '{print $3}'
500x757
Je bloque donc sur la separation des valeurs largeur et hauteur a cause du "x" entre les deux, et et a l'utilisation de celle ci comme variables...
Je vous remercie d'avance pour un petit coup de pouce, ou pour m'aider dans ce projet...
Dernière modification par polyopath (Le 29/10/2008, à 22:36)
Hors ligne
#2 Le 29/10/2008, à 20:29
- Link31
Re : [Resolu] Script de redimentionnement par lot de wallpaper
En Bash :
fichier="$HOME/Images/Wallpapers/4040bb718dccdd7d.jpg"
taille=$(identify "$fichier" | awk '{print $3}')
taille_x=$(cut -d'x' -f1 <<< "$taille")
taille_y=$(cut -d'x' -f2 <<< "$taille")
echo "Taille de l'image : X=${taille_x}, Y=${taille_y}"
Ou plus subtil :
fichier="$HOME/Images/Wallpapers/4040bb718dccdd7d.jpg"
eval $(identify "$fichier" | awk '{print $3}' | sed 's/\([0-9]*\)x\([0-9]*\)/taille_x=\1; taille_y=\2;/')
echo "Taille de l'image : X=${taille_x}, Y=${taille_y}"
Dernière modification par Link31 (Le 29/10/2008, à 20:31)
Hors ligne
#3 Le 29/10/2008, à 20:51
- polyopath
Re : [Resolu] Script de redimentionnement par lot de wallpaper
Merci pour cette reponse, je vais pouvoir m'y metre serieusement
J'ai modifier le titre du poste et je ne le ferme pas, si d'autres personnes personnes sont interessées par ce projet elles sont les bienvenues.
EDIT:
Link juste un petit truc t'a inversé X et Y
Correction:
fichier="$HOME/Images/Wallpapers/4040bb718dccdd7d.jpg"
taille=$(identify "$fichier" | awk '{print $3}')
taille_y=$(cut -d'x' -f1 <<< "$taille")
taille_x=$(cut -d'x' -f2 <<< "$taille")
echo "Taille de l'image : Y=${taille_y}, X=${taille_x}"
Dernière modification par polyopath (Le 29/10/2008, à 21:15)
Hors ligne
#4 Le 29/10/2008, à 21:44
- Link31
Re : [Resolu] Script de redimentionnement par lot de wallpaper
juste un petit truc t'a inversé X et Y
Je ne pense pas, non.
Une version encore plus simple :
fichier="$HOME/Images/Wallpapers/4040bb718dccdd7d.jpg"
eval $(identify -format "taille_x=%w; taille_y=%h;" "$fichier")
echo "Taille de l'image : X=${taille_x}, Y=${taille_y}"
Dernière modification par Link31 (Le 29/10/2008, à 21:46)
Hors ligne
#5 Le 29/10/2008, à 21:53
- Alain.g
Re : [Resolu] Script de redimentionnement par lot de wallpaper
Bonsoir
Il est possible d'ordonner à Imagemagick de redimensionner uniquement si l'image est plus grande que les dimensions données en utilisant > (qu'il faut échapper pour qu'il ne soit pas interprété comme un redirection)
http://www.imagemagick.org/www/command-line-options.html#resize
Dernière modification par Alain.g (Le 29/10/2008, à 21:54)
Xubuntu Karmic !
Hors ligne
#6 Le 29/10/2008, à 21:54
- polyopath
Re : [Resolu] Script de redimentionnement par lot de wallpaper
Ben dans une resolution on donne d'abord la largeur avant la hauteur
ex: 1280x800
mais conventionnelement dans un graphique
x est l'absice (horizontal) et y l'ordonnée (vertical)
sinon tes lignes sont bonnes
bon maintenant je suis en train de faire un tour sur les cours shell pour integrer des parametres (resolution de l'ecran) a la commande et pour faire un traitement par lot pour arriver a un resultat comme celui-ci:
./script.sh -l 1280 -h 800 ~/Images/Wallpaper/*.*
EDIT: Merci Alain.g je vais regarder ca, je pense que ca va me simplifier la tâche
EDIT1: Alain.g ta comande fonctionne a merveille je te remercie beaucoup
Donc la commande pour une resolution de 1280x800 est :
mogrify -resize '1280x800>' ~/repertoire/*.*
bien sûr il faut qu'il n'y ai que des images dans votre repertoire
cool, bon ben je passe le topic en resolu... merci a tous
Dernière modification par polyopath (Le 29/10/2008, à 22:36)
Hors ligne