Des outils d'optimisation JPEG? [fermé]

114

Connaissez-vous des outils (de préférence en ligne de commande) pour optimiser automatiquement et sans perte les fichiers JPEG que je pourrais intégrer dans notre environnement de construction? Pour les PNG, j'utilise actuellement PNGOUT , et cela économise généralement environ 40% de bande passante / taille d'image.

À tout le moins, j'aimerais un outil capable de supprimer les métadonnées des JPG - j'ai remarqué un cas étrange où j'ai essayé de créer une vignette à partir d'une photo et je ne pouvais pas la réduire à 34 ko. Après avoir enquêté davantage, j'ai trouvé que les données EXIF ​​faisaient toujours partie de l'image et que la vignette faisait 3 Ko après la suppression des métadonnées.

Et au-delà de cela, est-il possible d'optimiser davantage les JPG sans perte? L'optimiseur PNG essaie différentes stratégies de compression, l'initialisation aléatoire de l'encodage Huffmann, etc.

Je suis conscient que la plupart des économies proviennent du paramètre de qualité JPEG et que c'est une mesure plutôt subjective. Je recherche uniquement un outil qui peut être exécuté comme étape de construction et qui extrait sans perte quelques octets des images.

chris166
la source
Vous dites qu'il y avait environ 10 Ko d'EXIF dans un JPG optimisé avant la suppression d'EXIF?!?!?! Je me demande ce qu'il y a dedans!
netrox
C'était tout le bloc EXIF ​​d'un appareil photo numérique, y compris chaque petit détail sur cette photo (exposition, temps d'obturation, etc.)
chris166
@netrox chris166 Ces détails ne prennent pas beaucoup de place, ce qui prend beaucoup de place, ce sont les aperçus (données binaires).
Ariel
1
Deux articles de comparaison intéressants, qui répertorient les utilitaires énumérés ci-dessous: Comparaison des outils de compression sans perte JPEG, juin 2014 ; Benchmark des outils d'optimisation JPEG, février 2013 .
dma_k
@Ariel: le profil ICC a également tendance à prendre une grande place. J'ai vu plus de 500 Ko de données binaires de profil ICC.
saurabheights

Réponses:

68

J'utilise libjpeg pour des opérations sans perte. Il contient un outil de ligne de commande jpegtran qui peut faire tout ce que vous voulez. Avec l'option de ligne de commande, -copy nonetoutes les métadonnées sont supprimées et -optimizeoptimise sans perte la compression Huffmann. Vous pouvez également convertir les images en mode progressif avec -progressive, mais cela pourrait poser des problèmes de compatibilité (est-ce que quelqu'un en sait plus à ce sujet?)

OutOfMemory
la source
5
Wow, cela semble prometteur. Si quelqu'un est intéressé, le téléchargement pour Windows est à gnuwin32.sourceforge.net/packages/jpeg.htm
chris166
Je vais pour celui-ci. Cela réduit mon image de fond de 62 ko à 49 ko en mode progressif. Une autre image (27 ko) a été réduite à 23 ko. C'est 15-20% d'économies sans perte de qualité!
chris166
2
progressif fonctionne très bien dans pratiquement tout, le seul inconvénient est qu'il utilise plus de CPU pour décoder (pas assez de plus pour avoir de l'importance).
Ariel
1
le progressif peut souvent être plus grand que la ligne de base pour les fichiers de moins de 9k
Collin Anderson
3
Progressive a besoin de beaucoup plus de mémoire pour décoder. Les jpeg normaux peuvent être diffusés en streaming: vous n'avez besoin de décoder que par petites sections. Pour décoder un jpg progressif, vous devez garder en mémoire toute l'image décompressée en même temps.
jcupitt
72

J'ai écrit une interface graphique pour tous les outils d'optimisation d'image que j'ai pu trouver , y compris MozJPEG et jpegoptimqui optimisent les tables de Huffman, les analyses progressives et (éventuellement) suppriment les métadonnées invisibles.

ImageOptim le smushing

Si vous n'avez pas de Mac, j'ai également une interface Web de base qui fonctionne sur n'importe quelle plate-forme.

Kornel
la source
5
Excellent! Vous, monsieur, avez besoin d'un bouton Flattr. Ou rejoignez Gittip.
Thilo
2
ImageOptim et ImageAlpha sont super!
Jon z
Excellent outil - suggestion mineure. Pourquoi restreindre JPEGoptim à une qualité de 80% - de grandes images d'arrière-plan souvent vous voudriez aller à 60% ou même moins. thx
niico
pourquoi supprimer les données EXIF? : /
Adrien Be
@AdrienBe 1. Confidentialité. Vous ne voudrez peut-être pas que tout le monde sur le net connaisse votre position GPS. 2. car dans les fichiers enregistrés à partir de Photoshop, des mégaoctets de déchets XML peuvent être incorporés dans les fichiers.
Kornel
12

[WINDOWS SEULEMENT]

RIOT (Radical Image Optimization Tool) C'est le meilleur outil d'optimisation d'image que j'ai trouvé!

http://luci.criosweb.ro/riot/

Vous pouvez facilement obtenir une image de 10 Mo à 800 Ko par sous-échantillonnage. Il prend en charge les formats PNG, GIF et JPEG. Il s'intègre même dans les menus contextuels pour que vous puissiez y envoyer des images directement. Vous permet de faire pivoter, de redimensionner, de compresser en Ko spécifiés, etc. A également des plugins pour GIMP et IrfanView et d'autres choses.

Il existe également une DLL disponible si vous souhaitez l'intégrer dans vos propres programmes ou programme java script / c ++.

Une autre alternative est http://pnggauntlet.com/ PNGGAUNTLET prend une éternité, mais il fait un très bon travail.

[WINDOWS SEULEMENT]

Ben
la source
7
Attention: RIOT a l'air bien mais il installe TuneUp et merde sans vous demander, .. Je classerais cela comme Malware.
Daniel W.
1
@DanFromGermany a raison. Voir les critiques ici: download.cnet.com/RIOT/3000-12511_4-10911908.html#summaryList
RNickMcCandless
1
Cela ne l'a jamais fait jusqu'à récemment.
Ben
Alerte aux logiciels malveillants! Le gestionnaire de téléchargement Chrome avertit que RIOT est un malware
Ruhong
8
FYI: Il existe un fichier .zip portable pour RIOT qui ne contient aucun logiciel malveillant ou installateur d'aucune sorte. Faites simplement défiler vers le bas sur leur page de téléchargement. luci.criosweb.ro/riot/download
Goyuix
12

Un nouveau service appelé JPEGmini produit des résultats incroyables. Dommage que ce soit uniquement en ligne. Edit : il est maintenant disponible pour Windows et Mac

Eduardo Molteni
la source
Nous avons maintenant une application Mac disponible (divulgation: je fais partie de l'équipe de développement)
DanJ
4
Je ne sais pas si vous en êtes l'auteur ou non, mais cette application induit les utilisateurs en erreur. Si vous exécutez jpegquality.c sur leurs "mini" images pour détecter la quantité de compression, puis compressez les originaux avec imagemagick avec la même qualité => vous obtenez les mêmes résultats, les mêmes artefacts JPEG dans les deux images. Imagemagick est peut-être open-source, mais cela ne permet pas de l'utiliser et de prétendre ensuite que vous avez développé une nouvelle technologie de compression
beau cul
@onetrickpony: Je ne suis en aucun cas affilié à eux.
Eduardo Molteni
@niceass Comment savez-vous que JPEGmini utilise le code ImageMagick? Connaître le facteur de qualité est le même que la sortie de la messagerie instantanée n'est pas une preuve. Je suppose qu'ils recompressent l'image en réduisant les facteurs de qualité peut-être avec un peu de filtrage et qu'ils utilisent une métrique de qualité pour décider quand s'arrêter.
koan
J'ai exécuté le dernier JPEGmini sur une image que j'avais précédemment exportée depuis ImageMagick et il a été signalé que JPEGmini avait déjà été exécuté dessus - ce que je ne me souviens pas avoir fait. L'exécution de jpegtran -optimize -copy none sur la même image a réduit la taille de 12 Ko.
koan
10

J'ai essayé un certain nombre des suggestions ci-dessus - personnellement, j'étais après une compression sans perte.

Mon exemple d'image avait une taille originale de 67 737 octets.

En utilisant kraken.io, il est passé à 64718 En utilisant jpegtran, il est passé à 64718 En utilisant yahoo smush-it, il est passé à 61746 En utilisant imagemagick (-strip), il est passé à 65312

L'option smush.py semble prometteuse, mais l'installation était trop complexe pour que je puisse la faire rapidement

jpegrescan semble aussi prometteur, mais semble être unix et j'utilise Windows

jpegmini n'est PAS sans perte, mais je ne peux pas faire la différence (jusqu'à 22172)

L'application jpegstripper Altrasoft de plinth ne fonctionne pas sous Windows 7

jpegoptim n'est pas Windows - ce n'est pas bon pour moi

Riot (en maintenant la qualité à 100%) l'a ramené à 63416 et avec le sous-échantillonnage de la chrominance réglé sur élevé, il l'a ramené à 61912 - je ne sais pas si c'est sans perte ou non, et je pense qu'il semble plus léger que l'original .

Donc mon verdict est yahoo smushit si ça doit être sans perte

Graham Butcher
la source
jpegrescan fonctionne sur Windows si vous êtes têtu. Il rase la taille comme par magie (5 à 15% sans perte de qualité), ce qui est incroyable, car il ne fait que réorganiser l'ordre de balayage progressif AFAIK (vous remarquerez peut-être la même chose dans d'autres programmes, les fichiers deviennent parfois légèrement plus petits dans Photoshop si vous choisissez un nombre différent de scans, sans raison apparente). De plus, il a été fait par l'un des gars qui a fait x264, c'est un tel prodige dans le domaine de la compression.
Camilo Martin
7

ImageOptim est vraiment élégant. L'option de ligne de commande publiée par l'auteur remplira l'interface graphique et affichera la progression. J'ai utilisé jpegtran pour l'optimisation et la conversion en progressif, puis ImageOptim pour d'autres optimisations progressives et pour d'autres types de fichiers.

Réutilisation du code de script également trouvé dans ce forum (tous les fichiers remplacés en place):

jpegtran

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.jpeg" -or -name "*.JPG" \)); do
    echo found $file for optimizing...
    jpegtran -copy comments -optimize -progressive -outfile $file $file
done

ImageOptim

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.png" -or -name "*.gif" \)); do
do
    echo found $file for optimizing...
    open -a ImageOptim.app $file
done
bsy-web
la source
4

Au cas où quelqu'un chercherait, j'ai écrit une version hors ligne de Smush.it de Yahoo. Il optimisera sans perte les png, jpgs et gifs (animés et statiques):

http://github.com/thebeansgroup/smush.py

Timmy
la source
Cela fonctionne bien mais il y a un problème avec la compression png :(
4

Vous pouvez utiliser jpegoptim qui optimisera sans perte les fichiers jpeg par défaut. L' --strip-alloption supprime toutes les informations intégrées supplémentaires. Vous pouvez également spécifier un mode avec perte avec le --maxcommutateur, ce qui est utile lorsque vous avez des images enregistrées avec un réglage de très haute qualité, ce qui n'est pas nécessaire par exemple. contenu Web.

Vous obtenez une optimisation similaire à celle de jpegtran (voir la réponse de OutOfMemory) mais jpegoptim ne peut pas enregistrer en jpeg progressif.

bleu-gris
la source
4

J'ai écrit un outil de ligne de commande appelé 'picopt' (similaire à ImageOptim) qui utilise des programmes externes pour optimiser les fichiers JPEG, PNG, GIFS, GIFs animés et même le contenu des archives de bandes dessinées (CBR / CBZ).

Cela convient pour une utilisation avec homebrew sur les systèmes OS X ou Linux où vous avez installé des outils tels que jpegrescan, jpegtran, optipng, gifsicle, etc.

https://github.com/ajslater/picopt

AJ Slater
la source
Existe-t-il une version Windows de cela?
starbeamrainbowlabs
si vous pouvez installer ses dépendances posix dans un environnement Windows comme cygwin, il le pourrait. Vous seriez le premier à le tester, cependant.
AJ Slater
3

Je recommanderais moi aussi ImageMagick . Il a une option de ligne de commande pour supprimer les métadonnées EXIF

mogrify -strip image.jpg

Il existe de nombreux autres outils qui font la même chose.

En ce qui concerne la recompression des fichiers JPEG, ne le faites pas. Les fichiers JPEG sont avec perte au départ, donc toute forme de recompression ne fera que nuire à la qualité de l'image. Cependant, si vous avez des images encodées sans perte, certains encodeurs font un meilleur travail que d'autres. J'ai remarqué que les JPEG réalisés avec Photoshop sont toujours plus beaux que lorsqu'ils sont encodés avec ImageMagick (malgré la même taille de fichier) pour des raisons complexes . De plus (et cela vous concerne), je sais qu'au moins Photoshop peut enregistrer les fichiers JPEG comme optimisés, ce qui signifie qu'ils perdent la compatibilité avec certaines choses dont vous ne vous souciez probablement pas d'économiser quelques Ko. Assurez-vous également qu'aucun profil de couleur n'est intégré et que vous pourrez peut-être enregistrer quelques Ko supplémentaires.

David Johnstone
la source
Intéressant. J'ai toujours pensé que la qualité à 90% était la même dans tous les outils d'image. Photoshop est-il le seul outil qui utilise des coefficients DCT optimisés?
chris166
1
Je pensais que 90% allaient être les mêmes dans divers outils jusqu'à ce que j'essaye d'enregistrer les mêmes images dans Photoshop et Imagemagick. J'ai trouvé qu'environ 70% dans Enregistrer pour le Web dans Photoshop fabriquaient des fichiers qui avaient à peu près la même taille que 92% dans Imagemagick, mais les fichiers Photoshop étaient de meilleure qualité. Je n'ai aucune idée de comment les autres outils le font.
David Johnstone
Savez-vous comment effectuer la suppression des méta-données EXIF ​​en utilisant la version PHP d'ImageMagick?
Sonny
@Sonny Pas vraiment, mais cette fonction pourrait vous intéresser: php.net/manual/en/function.imagick-stripimage.php
David Johnstone
Merci David, c'est ce que j'ai fini par trouver. Voici mon fil de discussion: stackoverflow.com/questions/2540068
Sonny
2

Je recommanderais d'utiliser http://kraken.io C'est une application Web ultra-rapide qui optimisera vos fichiers PNG et JPEG bien mieux que smush.it.

Pono
la source
2

Je recommande d'utiliser JpegOptim, c'est gratuit et vraiment sympa, vous pouvez spécifier la qualité, la taille que vous voulez ... Et facile à utiliser en ligne de commande.

JpegOptim

agoniste_
la source
1

Puis-je recommander ceci pour une quasi-transparence:

convert 'yourfile.png' ppm:- | jpeg-recompress -t 97 -q veryhigh -a -m smallfry -s -r -S disable - yourfile.jpg

Il utilise ImageMagick « s convertet jpeg-recompressde jpeg-archives .

Les deux sont open-source et fonctionnent sous Windows, Mac et Linux. Vous voudrez peut-être modifier les options ci-dessus pour différentes attentes de qualité.

Camilo Martin
la source