ImageMagick: redimensionne 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 doit pas être supérieure à 300 Ko.

Est-ce possible, aidez-moi s’il vous plaît avec un exemple =)

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 ceci:

 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 

Notez que cela ne fonctionnera pas toujours pour correspondre exactement à la taille souhaitée. Vous avez peut-être demandé une taille de sortie de 40kb, avec une entrée de 300kb et un résultat de 48kb.


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

L’outil jpegoptim ( la page d’accueil actuelle 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 encore mieux les exécuter en les 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, ce qui vous donnera une qualité / taille optimale.

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