Tools zur JPEG-Optimierung? [geschlossen]


114

Kennen Sie Tools (vorzugsweise Befehlszeile) zur automatischen und verlustfreien Optimierung von JPEGs, die ich in unsere Build-Umgebung integrieren könnte? Für PNGs verwende ich derzeit PNGOUT und es spart im Allgemeinen etwa 40% Bandbreite / Bildgröße.

Zumindest hätte ich gerne ein Tool, mit dem Metadaten aus den JPGs entfernt werden können. Mir ist ein seltsamer Fall aufgefallen, in dem ich versucht habe, aus einem Foto ein Miniaturbild zu erstellen, das jedoch nicht kleiner als 34 kB werden konnte. Nachdem ich weitere Untersuchungen durchgeführt hatte, stellte ich fest, dass die EXIF-Daten immer noch Teil des Bildes waren und die Miniaturansicht nach dem Entfernen der Metadaten 3 kB betrug.

Und darüber hinaus - ist es möglich, JPGs verlustfrei weiter zu optimieren? Der PNG-Optimierer versucht verschiedene Komprimierungsstrategien, zufällige Initialisierung der Huffmann-Codierung usw.

Mir ist bewusst, dass die meisten Einsparungen durch den JPEG-Qualitätsparameter erzielt werden und dass dies ein eher subjektives Maß ist. Ich suche nur nach einem Tool, das als Build-Schritt ausgeführt werden kann und das verlustfrei einige Bytes aus den Bildern herausdrückt.


Sie sagen, dass EXIF ​​in einem optimierten JPG ungefähr 10 KB wert war, bevor EXIF ​​entfernt wurde?!?!?! Ich frage mich, was drin ist!
Netrox

Es war der gesamte EXIF-Block einer Digitalkamera, einschließlich aller Details zu diesem Foto (Belichtung, Verschlusszeit usw.)
chris166

@netrox chris166 Diese Details beanspruchen nicht viel Platz, was viel Platz beansprucht, sind Vorschauen (Binärdaten).
Ariel

1
Zwei interessante Vergleichsartikel, in denen die unten aufgeführten Dienstprogramme aufgeführt sind: Vergleich der verlustfreien JPEG-Komprimierungswerkzeuge, Juni 2014 ; Benchmark für JPEG-Optimierungstools, Februar 2013 .
dma_k

@Ariel: Das ICC-Profil nimmt in der Regel auch viel Platz ein. Ich habe über 500 KB ICC-Profil-Binärdaten gesehen.
Saurabheights

Antworten:


68

Ich benutze libjpeg für verlustfreie Operationen. Es enthält ein Befehlszeilenprogramm jpegtran , das alles kann, was Sie wollen. Mit der Befehlszeilenoption werden -copy nonealle Metadaten entfernt und -optimizedie Huffmann-Komprimierung wird verlustfrei optimiert. Sie können die Bilder auch mit in den progressiven Modus konvertieren -progressive, dies kann jedoch zu Kompatibilitätsproblemen führen (weiß jemand mehr darüber?)


5
Wow, das klingt vielversprechend. Wenn jemand interessiert ist, ist der Download für Windows unter gnuwin32.sourceforge.net/packages/jpeg.htm
chris166

Ich gehe für diesen. Es reduziert mein Hintergrundbild im progressiven Modus von 62 kB auf 49 kB. Ein weiteres Bild (27 kB) wurde auf 23 kB reduziert. Das sind 15-20% Einsparungen ohne Qualitätsverlust!
Chris166

2
Progressive funktioniert in praktisch allem einwandfrei. Der einzige Nachteil ist, dass mehr CPU zum Decodieren verwendet wird (nicht genug Extra, um eine Rolle zu spielen).
Ariel

1
Das Progressive kann oft größer sein als die Basis für Dateien mit weniger als 9 KB
Collin Anderson

3
Progressive benötigt viel mehr Speicher zum Dekodieren. Normale JPEGs können gestreamt werden: Sie müssen nur in kleinen Abschnitten dekodieren. Um ein progressives JPG zu dekodieren, müssen Sie das gesamte dekomprimierte Bild auf einmal im Speicher halten.
JCupitt

72

Ich habe eine GUI für alle Bildoptimierungstools geschrieben, die ich finden konnte , einschließlich MozJPEG, und jpegoptimdie Huffman-Tabellen optimieren, progressive Scans durchführen und (optional) unsichtbare Metadaten entfernen.

ImageOptim macht es kaputt

Wenn Sie keinen Mac haben, habe ich auch eine grundlegende Weboberfläche , die auf jeder Plattform funktioniert.


5
Ausgezeichnet! Sie, Sir, brauchen einen Flattr-Knopf. Oder mach mit bei Gittip.
Thilo

2
ImageOptim und ImageAlpha sind großartig!
Jon z

Tolles Tool - kleiner Vorschlag. Warum sollten Sie JPEGoptim auf 80% Qualität beschränken? Bei großen Hintergrundbildern möchten Sie häufig eine Qualität von 60% oder sogar weniger erzielen. thx
niico

Warum EXIF-Daten entfernen? : /
Adrien Be

@AdrienBe 1. Datenschutz. Möglicherweise möchten Sie nicht, dass jeder im Internet Ihren GPS-Standort kennt. 2. weil in aus Photoshop gespeicherten Dateien möglicherweise Megabyte XML-Müll in die Dateien eingebettet sind.
Kornel

12

[NUR FENSTER]

RIOT (Radical Image Optimization Tool) Dies ist das größte Bildoptimierungswerkzeug, das ich gefunden habe!

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

Durch Sub-Sampling können Sie problemlos ein 10-MB-Bild mit einer Größe von bis zu 800 KB erstellen. Es unterstützt PNG, GIF und JPEG. Es lässt sich sogar in Kontextmenüs integrieren, sodass Sie Bilder direkt dorthin senden können. Ermöglicht das Drehen, Ändern der Größe, Komprimieren auf bestimmte KBs und mehr. Hat auch Plugins für GIMP und IrfanView und andere Dinge.

Es ist auch eine DLL verfügbar, wenn Sie sie in Ihre eigenen Programme oder Java Script / C ++ - Programme integrieren möchten.

Eine andere Alternative ist http://pnggauntlet.com/ PNGGAUNTLET dauert ewig, aber es macht einen ziemlich guten Job.

[NUR FENSTER]


7
Warnung: RIOT sieht gut aus, installiert aber TuneUp und shit, ohne Sie zu fragen. Ich würde dies als Malware klassifizieren.
Daniel W.

1
@ DanFromGermany ist richtig. Siehe Bewertungen hier: download.cnet.com/RIOT/3000-12511_4-10911908.html#summaryList
RNickMcCandless

1
Bis vor kurzem war das noch nie der Fall.
Ben

Malware-Alarm! Chrome Download Manager warnt RIOT ist Malware
Ruhong

8
Zu Ihrer Information: Es gibt eine tragbare ZIP-Datei für RIOT, die keinerlei Malware oder Installationsprogramme enthält. Scrollen Sie einfach auf der Downloadseite nach unten. luci.criosweb.ro/riot/download
Goyuix

12

Ein neuer Dienst namens JPEGmini liefert unglaubliche Ergebnisse. Schade, dass es nur online ist. Bearbeiten : Es ist jetzt für Windows und Mac verfügbar


Wir haben jetzt eine Mac-App zur Verfügung (Offenlegung: Ich bin im Entwicklungsteam)
DanJ

4
Ich weiß nicht, ob Sie der Autor sind oder nicht, aber diese App führt Benutzer irre. Wenn Sie jpegquality.c auf ihren "Mini" -Bildern ausführen , um den Komprimierungsbetrag zu ermitteln, und dann die Originale mit imagemagick mit derselben Qualität komprimieren => erhalten Sie dieselben Ergebnisse und dieselben JPEG-Artefakte in beiden Bildern. Imagemagick mag Open Source sein, aber das macht es nicht in Ordnung, es zu verwenden und dann zu behaupten, Sie hätten eine neue Komprimierungstechnologie entwickelt
netter Arsch

@onetrickpony: Ich bin in keiner Weise mit ihnen verbunden.
Eduardo Molteni

@niceass Woher wissen Sie, dass JPEGmini ImageMagick-Code verwendet? Die Kenntnis des Qualitätsfaktors entspricht der Ausgabe von IM ist kein Beweis. Ich vermute, dass sie das Bild erneut komprimieren, um Qualitätsfaktoren zu reduzieren, möglicherweise mit ein wenig Filterung, und sie verwenden eine Qualitätsmetrik, um zu entscheiden, wann sie aufhören sollen.
Koan

Ich habe das neueste JPEGmini auf einem Bild ausgeführt, das ich zuvor aus ImageMagick exportiert hatte, und es wurde berichtet, dass JPEGmini bereits darauf ausgeführt wurde - woran ich mich nicht erinnere. Durch Ausführen von jpegtran -optimize -copy none auf demselben Bild wurde die Größe um 12 KB reduziert.
Koan

10

Versuchte eine Reihe der oben genannten Vorschläge - ich persönlich war nach verlustfreier Komprimierung.

Mein Beispielbild hatte eine Originalgröße von 67.737 Bytes.

Mit kraken.io ging es auf 64.718 zurück. Mit jpegtran ging es auf 64.718 zurück. Mit yahoo smush-it ging es auf 61.746 zurück. Mit imagemagick (-strip) ging es auf 65.312 zurück

Die Option smush.py sieht vielversprechend aus, aber die Installation war zu komplex, als dass ich sie schnell durchführen könnte

jpegrescan sieht ebenfalls vielversprechend aus, scheint aber Unix zu sein und ich benutze Windows

jpegmini ist NICHT verlustfrei, aber ich kann den Unterschied nicht erkennen (bis auf 22.172)

Die Altrasoft-JPEG-Stripper-App von Plinth funktioniert unter Windows 7 nicht

jpegoptim ist kein Windows - nicht gut für mich

Riot (mit einer Qualität von 100%) hat es auf 63.416 gesenkt und mit Chroma-Subsampling auf 61.912 - ich weiß nicht, ob das verlustfrei ist oder nicht, und ich denke, es sieht leichter aus als das Original .

Mein Urteil lautet also Yahoo Smushit, wenn es verlustfrei sein muss


jpegrescan funktioniert unter Windows, wenn Sie stur sind. Es reduziert die Größe wie durch Zauberei (5-15% ohne Qualitätsverlust), was erstaunlich ist, da nur die AFAIK-Reihenfolge für den progressiven Scan neu angeordnet wird (dies ist möglicherweise auch in anderen Programmen der Fall, Dateien werden in Photoshop manchmal geringfügig kleiner wenn Sie ohne ersichtlichen Grund eine andere Anzahl von Scans wählen). Außerdem wurde es von einem der Jungs gemacht, die x264 gemacht haben, er ist so ein Wunderkind auf dem Gebiet der Komprimierung.
Camilo Martin


7

ImageOptim ist wirklich schick. Die vom Autor bereitgestellte Befehlszeilenoption füllt die GUI und zeigt den Fortschritt an. Ich habe jpegtran zum Optimieren und Konvertieren in progressive verwendet, dann ImageOptim für weitere progressive Optimierungen und für andere Dateitypen.

Wiederverwendung von Skriptcode, der auch in diesem Forum gefunden wurde (alle Dateien wurden ersetzt):

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

4

Für den Fall, dass jemand hinschaut, habe ich eine Offline-Version von Yahoo Smush.it geschrieben. Es optimiert verlustfrei PNGs, JPGs und Gifs (animiert und statisch):

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


Es funktioniert gut, aber es gibt ein Problem mit der PNG-Komprimierung :(

4

Sie können jpegoptim verwenden, mit dem JPEG- Dateien standardmäßig verlustfrei optimiert werden. Die --strip-allOption entfernt alle zusätzlichen eingebetteten Informationen. Sie können mit dem --maxSchalter auch einen verlustbehafteten Modus festlegen , der nützlich ist, wenn Sie Bilder mit einer sehr hohen Qualitätseinstellung gespeichert haben, die z. Internetinhalt.

Sie erhalten eine ähnliche Optimierung wie bei jpegtran (siehe Antwort von OutOfMemory), aber jpegoptim kann nicht in progressiven JPEGs speichern.


4

Ich habe ein Befehlszeilentool namens 'picopt' (ähnlich wie ImageOptim) geschrieben, das externe Programme verwendet, um JPEGs, PNGs, GIFS, animierte GIFS und sogar Comic-Archivinhalte (CBR / CBZ) zu optimieren.

Dies ist für die Verwendung mit Homebrew auf OS X- oder Linux-Systemen geeignet, auf denen Sie Tools wie jpegrescan, jpegtran, optipng, gifsicle usw. installiert haben.

https://github.com/ajslater/picopt


Gibt es eine Windows-Version davon?
Starbeamrainbowlabs

Wenn Sie die Posix-Abhängigkeiten in einer Windows-Umgebung wie Cygwin installieren können, ist dies möglicherweise der Fall. Sie wären jedoch der Erste, der es testet.
AJ Slater

3

Ich würde auch ImageMagick empfehlen . Es verfügt über eine Befehlszeilenoption zum Entfernen von EXIF-Metadaten

mogrify -strip image.jpg

Es gibt viele andere Tools, die das Gleiche tun.

Wenn Sie JPEGs erneut komprimieren möchten, tun Sie dies nicht. JPEGs sind anfangs verlustbehaftet, sodass jede Form der Rekomprimierung nur die Bildqualität beeinträchtigt. Wenn Sie jedoch verlustfrei codierte Bilder haben, leisten einige Encoder bessere Arbeit als andere. Ich habe festgestellt, dass mit Photoshop erstellte JPEGs aus komplizierten Gründen durchweg besser aussehen als mit ImageMagick codiert (trotz gleicher Dateigröße) . Außerdem (und das ist für Sie relevant) weiß ich, dass zumindest Photoshop JPEGs als optimiert speichern kann, was bedeutet, dass sie die Kompatibilität mit einigen Dingen verlieren, die Sie wahrscheinlich nicht interessieren, um ein paar KB zu speichern. Stellen Sie außerdem sicher, dass keine Farbprofile eingebettet sind und Sie möglicherweise weitere KB speichern können.


Interessant. Ich habe immer gedacht, dass 90% Qualität bei allen Bildwerkzeugen gleich ist. Ist Photoshop das einzige Tool, das optimierte DCT-Koeffizienten verwendet?
Chris166

1
Ich dachte, 90% würden für verschiedene Tools gleich sein, bis ich versuchte, dieselben Bilder in Photoshop und Imagemagick zu speichern. Ich fand heraus, dass ungefähr 70% in Save for Web in Photoshop Dateien erstellten, die ungefähr so ​​groß waren wie 92% in Imagemagick, aber die Photoshop-Dateien hatten eine merklich bessere Qualität. Ich habe keine Ahnung, wie andere Tools das machen.
David Johnstone

Wissen Sie, wie das Entfernen von EXIF-Metadaten mit der PHP-Version von ImageMagick durchgeführt wird?
Sonny

@Sonny Nicht wirklich, aber Sie könnten an dieser Funktion interessiert sein: php.net/manual/en/function.imagick-stripimage.php
David Johnstone

Danke David, das habe ich gefunden. Hier ist mein Thread: stackoverflow.com/questions/2540068
Sonny


2

Ich empfehle JpegOptim zu verwenden, es ist kostenlos und sehr schön. Sie können die Qualität, die gewünschte Größe und die gewünschte Befehlszeile angeben.

JpegOptim


1

Darf ich dies für nahezu Transparenz empfehlen:

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

Es nutzt imagemagick ‚s convertund jpeg-recompressvon JPEG-Archiv .

Beide sind Open Source und funktionieren unter Windows, Mac und Linux. Möglicherweise möchten Sie die oben genannten Optionen für unterschiedliche Qualitätserwartungen anpassen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.