Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

imagemagick > thumbnail 500x500

29 réponses
Avatar
la.tete.o.carre
Bonjour =E0 tous

Je dois traiter tous les jours un grand nombre d'images pour un site
web. certaine sont petites et d'autre grandes (voir tr=E9s grandes).

Ce que je voudrai faire c'est un batch qui resize que les grandes,
avec imagemagick si je traite mes images avec "mogrify" et le
param=E8tre"-thumbnail 500x500" il traite toutes les images et agrandi
les petites pour les faire rentrer dans 500x500 pixels, ce qui est
tr=E9s moche.

moi, je ne voudrai traiter que les fichiers dont la largeur ou la
hauteur est sup=E9rieur =E0 500 pixels ;
pouvez-vous m'aidez ?

10 réponses

1 2 3
Avatar
Gabriel
a écrit dans le message de news:

Bonjour à tous



Je dois traiter tous les jours un grand nombre d'images pour un site
web. certaine sont petites et d'autre grandes (voir trés grandes).



Ce que je voudrai faire c'est un batch qui resize que les grandes,
avec imagemagick si je traite mes images avec "mogrify" et le
paramètre"-thumbnail 500x500" il traite toutes les images et agrandi
les petites pour les faire rentrer dans 500x500 pixels, ce qui est
trés moche.



moi, je ne voudrai traiter que les fichiers dont la largeur ou la
hauteur est supérieur à 500 pixels ;
pouvez-vous m'aidez ?



fasttone image viewer, dans les options de traitement par lot, il y a une
case pour indiquer de ne pas redimentionner si l'image d'origine est plus
petite que la taille souhaitée.
Avatar
Jacques L'helgoualc'h
Le 01-10-2008, la.tete.o.carre a écrit :
Bonjour à tous



bonjour,

Je dois traiter tous les jours un grand nombre d'images pour un site
web. certaine sont petites et d'autre grandes (voir trés grandes).

Ce que je voudrai faire c'est un batch qui resize que les grandes,
avec imagemagick si je traite mes images avec "mogrify" et le
paramètre"-thumbnail 500x500" il traite toutes les images et agrandi
les petites pour les faire rentrer dans 500x500 pixels, ce qui est
trés moche.

moi, je ne voudrai traiter que les fichiers dont la largeur ou la
hauteur est supérieur à 500 pixels ;
pouvez-vous m'aidez ?



http://www.imagemagick.org/script/command-line-options.php#resize

,---- -thumbnail cf. -resize,
| -resize width
| -resize widthxheight{%} {@} {!} {<} {>} {^}
|
| [...]
|
| Use > to change the dimensions of the image only if its width
| or height exceeds the geometry specification. < resizes the
| image only if both of its dimensions are less than the
| geometry specification. For example, if you specify 640x480>
| and the image size is 256x256, the image size does not
| change. However, if the image is 512x512 or 1024x1024, it is
| resized to 480x480. Enclose the geometry specification in
| quotation marks to prevent the < or > from being interpreted
| by your shell as a file redirection.
`----

donc essaie « -thumbnail "500x500>" » ?

Hop zat elpse,
--
Jacques L'helgoualc'h
Avatar
Guillaume Laget
L'idée serait de récupérer les dimensions de l'image (imgsize),
de déterminer si l'image est horizontale ou verticale, et si la
dimension max est supérieure à 500.
Dans ce dernier cas utiliser un mogrify -resize 500x (image
horizontale) ou mogrify -resize x500 (image verticale) pour obtenir une
image homothétique à l'original.

Je sais faire en Perl (avec Perlmagick) si ça t'intéresse, en bash
c'est très certainement faisable aussi mais je ne maîtrise pas la
syntaxe (principalement pour la récupération des données de
largeur/hauteur qui arrivent, avec imgsize, sous la forme width="2505"
height="3780"

Guillaume
--
Lumières de l'Alpe : http://www.tetras.org/
nouveau livre : Objectif Nuit, paysages nocturnes
http://objectif-nuit.over-blog.com/
Avatar
Den
a écrit :
> Ce que je voudrai faire c'est un batch qui resize que les grandes,
avec imagemagick si je traite mes images avec "mogrify" et le
paramètre"-thumbnail 500x500" il traite toutes les images et agrandi
les petites pour les faire rentrer dans 500x500 pixels, ce qui est
trés moche.

moi, je ne voudrai traiter que les fichiers dont la largeur ou la
hauteur est supérieur à 500 pixels ;
pouvez-vous m'aidez ?



Moi non, mais Xnview oui !

Cordialement,
Den

--
Pour me répondre en privé, enlever "pubpasglop" de mon adresse.
Avatar
Jacques L'helgoualc'h
Le 01-10-2008, Guillaume Laget a écrit :
L'idée serait de récupérer les dimensions de l'image (imgsize),
de déterminer si l'image est horizontale ou verticale, et si la
dimension max est supérieure à 500.
Dans ce dernier cas utiliser un mogrify -resize 500x (image
horizontale) ou mogrify -resize x500 (image verticale) pour obtenir une
image homothétique à l'original.



Par défaut, imagemagick respecte les proportions de l'image, donc
une image 800x600 donnera avec -resize "500x500>" une réduction
homothétique 500x375 inscrite dans le carré 500x500, et vice-versa
pour une 600x800.

Il peut être préférable de choisir 480x480 pour obtenir un nombre
entier de blocs 8x8.

Je sais faire en Perl (avec Perlmagick) si ça t'intéresse, en bash
c'est très certainement faisable aussi mais je ne maîtrise pas la
syntaxe (principalement pour la récupération des données de
largeur/hauteur qui arrivent, avec imgsize, sous la forme width="2505"
height="3780"



Bash n'est pas à conseiller pour des scripts un peu sophistiqués...

Sans écrire de script, Zsh est plus commode pour descendre dans les
sous-répertoires :

cp -a images vignettes
cd vignettes
mogrify [options] vignettes/**/*.jpg

à tester d'abord, on a vite fait de se tirer une rafale dans le pied
avec Zsh.
--
Jacques L'helgoualc'h
Avatar
Jacques L'helgoualc'h
Le 01-10-2008, Guillaume Laget a écrit :
L'idée serait de récupérer les dimensions de l'image (imgsize),
de déterminer si l'image est horizontale ou verticale, et si la
dimension max est supérieure à 500.
Dans ce dernier cas utiliser un mogrify -resize 500x (image
horizontale) ou mogrify -resize x500 (image verticale) pour obtenir une
image homothétique à l'original.



Par défaut, imagemagick respecte les proportions, donc une image 800x600
donnera avec -resize "500x500>" une réduction homothétique 500x375
inscrite dans le carré 500x500, et vice-versa pour une 600x800.

Il peut être préférable de choisir 480x480 pour obtenir un nombre
entier de blocs 8x8.

Je sais faire en Perl (avec Perlmagick) si ça t'intéresse, en bash
c'est très certainement faisable aussi mais je ne maîtrise pas la
syntaxe (principalement pour la récupération des données de
largeur/hauteur qui arrivent, avec imgsize, sous la forme width="2505"
height="3780"



Bash n'est pas à conseiller pour des scripts un peu sophistiqués...

Sans écrire de script, Zsh est plus commode pour descendre dans les
sous-répertoires :

cp -a images vignettes
cd vignettes
mogrify [options] vignettes/**/*.jpg

à tester d'abord, on a vite fait de se tirer une rafale dans le pied
avec Zsh.
--
Jacques L'helgoualc'h
Avatar
Guillaume Laget
> cp -a images vignettes
cd vignettes
mogrify [options] vignettes/**/*.jpg


Mais ça ne résoud pas le problème de la non-modification des images de
taille inférieure au format voulu.
Sinon, on peut aussi utiliser un simple

for i in *jpg; do mogrify (..) $i; done

ou pour ne pas écraser les images, un truc du genre

for i in *jpg; do convert (...) $i ${i%.jpg}_vignette.jpg; done

GL
--
Lumières de l'Alpe : http://www.tetras.org/
nouveau livre : Objectif Nuit, paysages nocturnes
http://objectif-nuit.over-blog.com/
Avatar
Jacques L'helgoualc'h
Le 01-10-2008, Guillaume Laget a écrit :
cp -a images vignettes
cd vignettes
mogrify [options] vignettes/**/*.jpg


Mais ça ne résoud pas le problème de la non-modification des images de
taille inférieure au format voulu.



Si, c'est l'effet du suffixe « > » !

Sinon, on peut aussi utiliser un simple

for i in *jpg; do mogrify (..) $i; done



Là tu ne descends pas dans les sous-répertoires, un simple

mogrify [options] *.jpg

suffit.

ou pour ne pas écraser les images, un truc du genre

for i in *jpg; do convert (...) $i ${i%.jpg}_vignette.jpg; done



Oui, ça évite la copie porcine de l'arborescence avant réduction --- par
contre, convert est relancé pour chaque fichier. ImageMagick dispose
aussi de quelques méthodes internes pour gérer le « globbing ».
--
Jacques L'helgoualc'h
Avatar
Didier
> Bonjour à tous

Je dois traiter tous les jours un grand nombre d'images pour un site
web. certaine sont petites et d'autre grandes (voir trés grandes).

Ce que je voudrai faire c'est un batch qui resize que les grandes,
avec imagemagick si je traite mes images avec "mogrify" et le
paramètre"-thumbnail 500x500" il traite toutes les images et agrandi
les petites pour les faire rentrer dans 500x500 pixels, ce qui est
trés moche.

moi, je ne voudrai traiter que les fichiers dont la largeur ou la
hauteur est supérieur à 500 pixels ;
pouvez-vous m'aidez ?





Reduila permet de ne redimenssionner que les images qui dépassent 500 en
hauteur et/ou en largeur :

- Faire un drag'n drop du répertoire dans la fenêtre
- Sélectionner un répertoire de destination (c'est le Bureau de Windows par
défaut)
- Sélectionner "En pixels... Maximum" et saisir la valeur 500
- Cliquer "Tout réduire"

Par défaut l'arborescence du répertoire sera conservée, mais on peut
extraire les images des sous-répertoires et stocker les images réduites sans
arborescence : sélectionner "Mode Flat" dans les options.

Freeware : http://dicel.free.fr/reduila

Didier
Avatar
Guillaume Laget
> Si, c'est l'effet du suffixe « > » !


Hum, désolé, j'ai lu trop vite...merci pour l'info !

for i in *jpg; do mogrify (..) $i; done


Là tu ne descends pas dans les sous-répertoires, un simple


Effectivement, en général j'ai une liste de fichiers plus
explicite (sortie d'un script de recherche dans ma base d'infos sur mes
images) plutôt qu'un simple *jpg..mais ça ne convient pas forcément à
tous les usages.

GL
--
Lumières de l'Alpe : http://www.tetras.org/
nouveau livre : Objectif Nuit, paysages nocturnes
http://objectif-nuit.over-blog.com/
1 2 3