web-dev-qa-db-fra.com

ImageMagick: redimensionner l'image JPEG avec une taille de fichier maximale

J'ai un certain nombre d'images JPEG que je voudrais réduire. Une autre exigence est que la taille du fichier ne soit pas supérieure à 300 Ko par exemple.

Est-ce possible, veuillez m'aider avec un exemple =)

50
kungcc

Pour restreindre l'image résultante à une taille de fichier maximale, vous pouvez utiliser le paramètre de ligne de commande -define jpeg:extent=max_value, comme ça:

convert original.jpeg -define jpeg:extent=300kb output.jpg
convert original.jpeg -define jpeg:extent=300kb -scale 50% output.jpg
convert original.jpeg -define jpeg:extent=300kb [...other options...] output.jpg

Remarque, cela ne fonctionnera pas toujours pour correspondre à la taille exacte que vous vouliez. Vous avez peut-être demandé une taille de sortie de 40 Ko, où l'entrée est de 300 Ko, et obtenez un résultat de 48 Ko.


( Mise à jour/clarification: La taille du fichier de sortie peut être un peu inférieure ou supérieure à la taille demandée par votre fichier.)

77
Kurt Pfeifle

L'outil jpegoptim ( page d'accueil réelle est pour plusieurs programmes) fonctionne mieux pour moi:

jpegoptim -s -S8 *.JPG
  • -s signifie supprimer toutes les métadonnées (EXIF, JFIF, XMP, etc.)
  • -S8 signifie cibler une taille de fichier d'environ 8 Ko

Vous pouvez les crunch encore mieux en l'exécutant deux fois, car empiriquement, la plupart des images sont plus petites que progressives:

jpegoptim -s --all-progressive -S8 *.JPG; jpegoptim -s --all-normal -S8 *.JPG

jpegoptim refusera normalement d'écrire une image qui augmente la taille, donc cela vous donnera une qualité/taille optimale.

En ce qui concerne la partie dimensions de l'image: vous définissez normalement une taille cible en termes de dimensions d'abord et vous y mettez à l'échelle, seulement ensuite vous définissez la cible taille du fichier . En effet, lorsque vous l'affichez, vous voulez idéalement que les dimensions de l'image soient un multiple entier ou une fraction des dimensions d'affichage finales, pour rendre la mise à l'échelle plus facile, voire inutile. Donc, redimensionnez d'abord les dimensions cibles (avec une qualité 100, et peut-être d'autres choses comme la chrominance 4: 4: 4, et très certainement avec dct float), puis réduisez le fichier. Si vous ne pouvez pas atteindre la plage de taille de fichier souhaitée, choisissez des dimensions cibles plus petites et redémarrez (à partir de l'image d'origine, pas celle que vous avez réduite en premier).

13
mirabilos