Alat untuk pengoptimalan JPEG? [Tutup]

114

Apakah Anda mengetahui alat apa pun (lebih disukai baris perintah) untuk mengoptimalkan JPEG secara otomatis dan tanpa kehilangan yang dapat saya integrasikan ke dalam lingkungan pembuatan kami? Untuk PNG saat ini saya menggunakan PNGOUT , dan umumnya menghemat sekitar 40% bandwidth / ukuran gambar.

Paling tidak, saya ingin alat yang dapat menghapus metadata dari JPG - Saya melihat kasus aneh di mana saya mencoba membuat thumbnail dari sebuah foto, dan tidak bisa membuatnya lebih kecil dari 34 kB. Setelah menyelidiki lebih lanjut, saya menemukan bahwa data EXIF ​​masih menjadi bagian dari gambar, dan thumbnail berukuran 3 kB setelah menghapus metadata.

Dan di luar itu - apakah mungkin untuk lebih mengoptimalkan JPG tanpa kehilangan? Pengoptimal PNG mencoba berbagai strategi kompresi, inisialisasi acak pengkodean Huffmann, dll.

Saya sadar bahwa sebagian besar penghematan berasal dari parameter kualitas JPEG, dan ini merupakan ukuran yang agak subjektif. Saya hanya mencari alat yang dapat dijalankan sebagai langkah pembuatan dan yang memeras beberapa byte dari gambar tanpa kerugian.

chris166
sumber
Anda mengatakan bahwa ada sekitar 10 KB senilai EXIF ​​dalam JPG yang dioptimalkan sebelum EXIF ​​dihapus?!?!?! Aku penasaran apa isinya!
netrox
Itu adalah seluruh blok EXIF ​​dari kamera digital, termasuk setiap detail kecil tentang foto ini (pencahayaan, waktu rana, dll ...)
chris166
@netrox chris166 Detail tersebut tidak memakan banyak ruang, yang memakan banyak ruang adalah pratinjau (data biner).
Ariel
1
Dua artikel perbandingan yang menarik, yang mencantumkan utilitas yang tercantum di bawah ini: Perbandingan Alat Kompresi Lossless JPEG, Juni 2014 ; Tolok ukur alat pengoptimalan JPEG, Feb 2013 .
dma_k
@Ariel: Profil ICC juga cenderung memakan tempat yang besar. Saya telah melihat lebih dari 500KB data biner profil ICC.
saurabheights

Jawaban:

68

Saya menggunakan libjpeg untuk operasi lossless. Ini berisi alat baris perintah jpegtran yang dapat melakukan semua yang Anda inginkan. Dengan opsi baris perintah, -copy nonesemua metadata dihilangkan, dan -optimizemelakukan pengoptimalan lossless dari kompresi Huffmann. Anda juga dapat mengonversi gambar ke mode progresif dengan -progressive, tetapi itu dapat menyebabkan masalah kompatibilitas (adakah yang tahu lebih banyak tentang itu?)

OutOfMemory
sumber
5
Wow, kedengarannya menjanjikan. Jika ada yang tertarik, download untuk Windows adalah di gnuwin32.sourceforge.net/packages/jpeg.htm
chris166
Aku akan memilih yang ini. Ini mengurangi gambar latar belakang saya dari 62 kB menjadi 49 kB dalam mode progresif. Gambar lain (27 kB) dikurangi menjadi 23 kB. Itu penghematan 15-20% tanpa kehilangan kualitas!
chris166
2
progresif berfungsi dengan baik pada dasarnya dalam segala hal, satu-satunya kelemahan adalah ia menggunakan lebih banyak CPU untuk memecahkan kode (tidak cukup tambahan untuk masalah).
Ariel
1
progresif seringkali bisa lebih besar dari baseline untuk file kurang dari 9k
Collin Anderson
3
Progresif membutuhkan lebih banyak memori untuk memecahkan kode. JPEG biasa dapat di-streaming: Anda hanya perlu memecahkan kode di bagian-bagian kecil. Untuk memecahkan kode jpg progresif, Anda perlu menyimpan seluruh gambar yang telah didekompresi dalam memori sekaligus.
jcupitt
72

Saya menulis GUI untuk semua alat pengoptimalan gambar yang dapat saya temukan , termasuk MozJPEG dan jpegoptimyang mengoptimalkan tabel Huffman, pemindaian progresif, dan (opsional) menghapus metadata yang tidak terlihat.

ImageOptim menghancurkannya

Jika Anda tidak memiliki Mac, saya juga memiliki antarmuka web dasar yang berfungsi di semua platform.

Kornel
sumber
5
Luar biasa! Anda, Pak, membutuhkan tombol Flattr. Atau bergabunglah dengan Gittip.
Thilo
2
ImageOptim dan ImageAlpha sangat bagus!
Jon z
Alat hebat - saran kecil. Mengapa membatasi JPEGoptimal hingga kualitas 80% - gambar latar belakang besar sering kali Anda ingin naik ke 60% atau bahkan lebih rendah. thx
niico
mengapa menghapus data EXIF? : /
Adrien Be
@AdrienBe 1. Privasi. Anda mungkin tidak ingin semua orang di internet mengetahui lokasi GPS Anda. 2. karena dalam file yang disimpan dari Photoshop dapat terdapat megabyte sampah XML yang disematkan di file.
Kornel
12

[HANYA JENDELA]

RIOT (Alat Pengoptimalan Gambar Radikal) Ini adalah alat pengoptimalan gambar terbaik yang pernah saya temukan!

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

Anda dapat dengan mudah mendapatkan gambar 10MB hingga 800KB melalui sub-sampling. Ini mendukung PNG, GIF, dan JPEG. Itu bahkan terintegrasi ke dalam menu konteks sehingga Anda dapat mengirim gambar langsung ke sana. Memungkinkan Anda untuk memutar, mengubah ukuran, mengompres ke KB tertentu, dan banyak lagi. Juga memiliki plugin untuk GIMP dan IrfanView dan lainnya.

Ada juga DLL yang tersedia jika Anda ingin memasukkannya ke dalam program Anda sendiri atau program java script / c ++.

Alternatif lain adalah http://pnggauntlet.com/ PNGGAUNTLET membutuhkan waktu lama tetapi itu melakukan pekerjaan yang cukup baik.

[HANYA JENDELA]

Ben
sumber
7
Peringatan: RIOT terlihat bagus tetapi ia menginstal TuneUp tanpa bertanya kepada Anda, .. Saya akan mengklasifikasikan ini sebagai Malware.
Daniel W.
1
@DanFromGermany benar. Lihat ulasan di sini: download.cnet.com/RIOT/3000-12511_4-10911908.html#summaryList
RNickMcCandless
1
Itu tidak pernah terjadi sampai saat ini.
Ben
Peringatan malware! Manajer unduhan Chrome memperingatkan RIOT adalah malware
ruhong
8
FYI: Ada file .zip portabel untuk RIOT yang tidak berisi malware atau installer apa pun. Cukup gulir ke bawah di halaman unduhan mereka. luci.criosweb.ro/riot/download
Goyuix
12

Sebuah layanan baru bernama JPEGmini memberikan hasil yang luar biasa. Sayang sekali itu hanya online. Edit : Ini tersedia untuk Windows dan Mac sekarang

Eduardo Molteni
sumber
Kami sekarang memiliki aplikasi Mac yang tersedia (pengungkapan: Saya di tim pengembangan)
DanJ
4
Saya tidak tahu apakah Anda penulisnya atau bukan, tetapi aplikasi itu menyesatkan pengguna. Jika Anda menjalankan jpegquality.c pada gambar "mini" mereka untuk mendeteksi jumlah kompresi, dan kemudian mengompres yang asli dengan imagemagick dengan kualitas yang sama => Anda mendapatkan hasil yang sama, artefak JPEG yang sama di kedua gambar. Imagemagick mungkin open-source, tapi itu tidak membuatnya oke untuk menggunakannya dan kemudian mengklaim Anda mengembangkan teknologi kompresi baru
nice ass
@onetrickpony: Saya tidak berafiliasi dengan mereka sama sekali.
Eduardo Molteni
@niceass Bagaimana Anda tahu bahwa JPEGmini menggunakan kode ImageMagick? Mengetahui faktor kualitas sama dengan keluaran dari IM bukanlah bukti. Dugaan saya adalah bahwa mereka mengompresi ulang gambar untuk mengurangi faktor kualitas mungkin dengan sedikit penyaringan dan mereka menggunakan beberapa metrik kualitas untuk memutuskan kapan harus berhenti.
koan
Saya menjalankan JPEGmini terbaru pada gambar yang sebelumnya saya ekspor dari ImageMagick dan dilaporkan bahwa JPEGmini telah dijalankan di atasnya - yang saya tidak ingat melakukannya. Menjalankan jpegtran -optimize -copy none pada gambar yang sama diperkecil ukurannya hingga 12 KB.
koan
10

Mencoba sejumlah saran di atas - Saya pribadi setelah kompresi lossless.

Gambar sampel saya memiliki ukuran asli 67.737 byte.

Menggunakan kraken.io, turun menjadi 64.718 Menggunakan jpegtran, turun menjadi 64.718 Menggunakan yahoo smush-it, turun menjadi 61.746 Menggunakan imagemagick (-strip), turun menjadi 65.312

Opsi smush.py terlihat menjanjikan, tetapi penginstalannya terlalu rumit untuk saya lakukan dengan cepat

jpegrescan terlihat menjanjikan juga, tetapi tampaknya unix dan saya menggunakan windows

jpegmini BUKAN lossless, tapi saya tidak bisa membedakannya (turun menjadi 22.172)

Aplikasi jpegstripper Altrasoft alas tidak berfungsi di windows 7 saya

jpegoptim bukan windows - tidak baik untuk saya

Riot (menjaga kualitas pada 100%) menurunkannya menjadi 63.416 dan dengan subsampling chroma disetel ke tinggi, menurunkannya menjadi 61.912 - Saya tidak tahu apakah itu lossless atau tidak, dan saya pikir itu terlihat lebih ringan dari aslinya .

Jadi putusan saya yahoo smushit kalau harus lossless

Graham Butcher
sumber
jpegrescan berfungsi di Windows jika Anda keras kepala. Ini memangkas ukuran seperti sihir (5-15% tanpa kehilangan kualitas), yang luar biasa, karena ini hanya memesan ulang pemindaian progresif yang memesan AFAIK (Anda mungkin memperhatikan hal yang sama di program lain, file terkadang sedikit lebih kecil di Photoshop jika Anda memilih jumlah pemindaian yang berbeda, tanpa alasan yang jelas). Juga, itu dibuat oleh salah satu orang yang membuat x264, dia sangat ahli di bidang kompresi.
Camilo Martin
7

ImageOptim sangat apik. Opsi baris perintah yang diposting oleh penulis akan mengisi GUI dan menunjukkan kemajuan. Saya menggunakan jpegtran untuk mengoptimalkan dan mengubah ke progresif, lalu ImageOptim untuk pengoptimalan progresif lebih lanjut dan untuk jenis file lainnya.

Penggunaan kembali kode skrip juga ditemukan di forum ini (semua file diganti di tempat):

jpegtran.dll

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
sumber
4

Jika ada yang melihat, saya telah menulis versi offline Yahoo's Smush.it. Ini akan mengoptimalkan pngs, jpgs dan gifs (animasi dan statis) tanpa kehilangan:

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

timmy
sumber
Ini berfungsi dengan baik tetapi ada masalah dengan kompresi png :(
4

Anda dapat menggunakan jpegoptim yang akan mengoptimalkan file jpeg secara default. The --strip-allpilihan strip semua info tambahan tertanam. Anda juga dapat menentukan mode kerugian dengan --maxsakelar yang berguna ketika Anda memiliki gambar yang disimpan dengan pengaturan kualitas yang sangat tinggi, yang tidak diperlukan untuk mis. isi web.

Anda mendapatkan pengoptimalan yang serupa dengan jpegtran (lihat jawaban oleh OutOfMemory) tetapi jpegoptim tidak dapat menyimpan ke jpeg progresif.

bluegray
sumber
4

Saya telah menulis alat baris perintah yang disebut 'picopt' (mirip dengan ImageOptim) yang menggunakan program eksternal untuk mengoptimalkan JPEG, PNG, GIFS, GIF animasi, dan bahkan konten arsip buku komik (CBR / CBZ).

Ini cocok untuk digunakan dengan homebrew di sistem OS X atau Linux di mana Anda telah menginstal alat seperti jpegrescan, jpegtran, optipng, gifsicle, dll.

https://github.com/ajslater/picopt

AJ Slater
sumber
Apakah ada versi windows ini?
starbeamrainbowlabs
jika Anda dapat menginstal dependensi posix di lingkungan windows seperti cygwin. Anda akan menjadi orang pertama yang mengujinya.
AJ Slater
3

Saya juga akan merekomendasikan ImageMagick . Ini memiliki opsi baris perintah untuk menghapus metadata EXIF

mogrify -strip image.jpg

Ada banyak alat lain di luar sana yang melakukan hal yang sama.

Sejauh mengompresi ulang JPEG, jangan. JPEG awalnya lossy, jadi segala bentuk kompresi ulang hanya akan merusak kualitas gambar. Namun, jika Anda memiliki gambar yang dienkode tanpa kehilangan, beberapa pembuat enkode bekerja lebih baik daripada yang lain. Saya telah memperhatikan bahwa JPEG yang dilakukan dengan Photoshop secara konsisten terlihat lebih baik daripada ketika dikodekan dengan ImageMagick (meskipun ukuran file yang sama) karena alasan yang rumit . Selain itu (dan ini relevan bagi Anda), saya tahu bahwa setidaknya Photoshop dapat menyimpan JPEG sebagai dioptimalkan yang berarti mereka menjatuhkan kompatibilitas dengan beberapa hal yang mungkin tidak Anda pedulikan untuk menghemat beberapa KB. Selain itu, pastikan Anda tidak memiliki profil warna yang disematkan dan Anda mungkin dapat menyimpan beberapa KB lagi.

David Johnstone
sumber
Menarik. Saya selalu berpikir bahwa kualitas 90% sama di semua alat gambar. Apakah Photoshop satu-satunya alat yang menggunakan koefisien DCT yang dioptimalkan?
chris166
1
Saya pikir 90% akan sama di berbagai alat sampai saya mencoba menyimpan gambar yang sama di Photoshop dan Imagemagick. Saya menemukan bahwa sekitar 70% di Save for Web di Photoshop membuat file dengan ukuran yang sama dengan 92% di Imagemagick, tetapi file Photoshop memiliki kualitas yang lebih baik. Saya tidak tahu bagaimana alat lain melakukannya.
David Johnstone
Apakah Anda tahu bagaimana cara melakukan pengupasan data meta EXIF ​​menggunakan ImageMagick versi PHP?
Sonny
@Sonny Tidak juga, tetapi Anda mungkin tertarik dengan fungsi ini: php.net/manual/en/function.imagick-stripimage.php
David Johnstone
Terima kasih David, itulah yang akhirnya saya temukan. Inilah utas saya: stackoverflow.com/questions/2540068
Sonny
2

Saya akan merekomendasikan menggunakan http://kraken.io Ini adalah webapp ultra-cepat yang akan mengoptimalkan file PNG dan JPEG Anda jauh lebih baik daripada smush.it.

Pono
sumber
2

Saya merekomendasikan untuk menggunakan JpegOptim, gratis dan sangat bagus, Anda dapat menentukan kualitas, ukuran yang Anda inginkan ... Dan mudah digunakan dalam baris perintah.

JpegOptim

agonis_
sumber
1

Bolehkah saya merekomendasikan ini untuk hampir transparan:

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

Menggunakan ImageMagick 's convertdan jpeg-recompressdari jpeg-arsip .

Keduanya open-source dan bekerja di Windows, Mac dan Linux. Anda mungkin ingin mengubah opsi di atas untuk ekspektasi kualitas yang berbeda.

Camilo Martin
sumber