Bagaimana menemukan kualitas JPG?

16

Ketika saya menyimpan file JPG dengan GIMP, saya dapat menyesuaikan kualitas tempat saya menyimpannya, dari 0-100 (saya menggunakan 89). Sepertinya saya sudah menggunakan aplikasi untuk melihat apa nomor ini pada file yang disimpan tetapi jika saya lakukan saya tidak bisa seumur hidup saya mencari tahu apa itu. Ada saran tentang apa yang harus digunakan?

Nathaniel
sumber
2
Hanya untuk memastikan bahwa itu diketahui: pengaturan kualitas aplikasi yang berbeda tidak dapat dibandingkan, secara umum: faqs.org/faqs/jpeg-faq/part1/section-5.html . Baik GIMP dan ImageMagick harus menggunakan skala kualitas IJG.
Michael Schumacher

Jawaban:

22

Setelah disimpan, Anda tidak dapat lagi mengetahui kualitasnya.

(Mengatur kualitas sambil menyimpan hanya memberitahu perangkat lunak berapa banyak kerugian yang Anda dapat diterima, tetapi sekali disimpan: apa yang hilang hilang. Anda perlu manusia untuk mengatakan jika sesuatu terlihat bagus.)

Hmmm, saya kira saya salah. Saya masih berpikir di atas adalah benar, tetapi ImageMagick 's identifymembuktikan saya salah?

identifikasikan -verbose myimage.jpg

Gambar: myimage.jpg
  Format: JPEG (Format Gabungan Kelompok Ahli Fotografi Bersama)
  Kelas: DirectClass
  Geometri: 358x240 + 0 + 0
  Resolusi: 300x300
  [...]
  Kompresi: JPEG
  Kualitas: 90
  Orientasi: Tidak terdefinisi
  [...]

Saya tidak tahu bagaimana gambar dalam pengujian saya disimpan, tetapi tidak memiliki data EXIF. Mungkinkah kualitasnya masih disimpan dalam gambar?

Arjan
sumber
Tidak bisakah Anda bereksperimen mengkonversi ke kualitas yang berbeda? Saya merasa sulit untuk percaya, kecuali ImageMagick menyimpan beberapa data pribadi di jpg (jadi ini mungkin tidak berfungsi dengan paket lain).
harrymc
Menarik. Saya akan menunggu untuk melihat bagaimana ini keluar.
Nathaniel
1
+1 Ya imagemagick berfungsi. Saya berulang kali dapat mengubah kualitas jpeg dan menggunakan identifikasi untuk melihat perubahannya. Ini berfungsi jika saya menggunakan convert (ketidakstabilan imagemagick lain) atau alat lain seperti MS Photo Editor.
DaveParillo
1
ImageMagick melakukan sesuatu yang berbeda. Ini memberikan perkiraan, daripada membaca apa yang perangkat lunak asli Anda lakukan. Jawaban Anda yang asli, yang sekarang sudah dicoret, lebih benar. Lihat jawaban @ sleske.
mattdm
26

Untuk menambah jawaban Arjan:

ImageMagick identifytampaknya benar-benar melihat ke dalam gambar JPEG untuk menebak pengaturan kualitas yang digunakan untuk menyandikannya.

Kode sumber ImageMagick (mendukung perangkat lunak gratis :-)) berisi baris :

/*
  Determine the JPEG compression quality from the quantization tables.
*/
sum=0;
for (i=0; i < NUM_QUANT_TBLS; i++)
{
  if (jpeg_info.quant_tbl_ptrs[i] != NULL)
    for (j=0; j < DCTSIZE2; j++)
      sum+=jpeg_info.quant_tbl_ptrs[i]->quantval[j];

( coders/jpeg.c, baris 843 dst. dalam versi terbaru saya dari kode sumber ImageMagick).

Saya tidak cukup tahu tentang JPEG untuk benar-benar mengerti, tetapi tampaknya melakukan sesuatu seperti yang dijelaskan dalam artikel ini:

Tentukan faktor kualitas JPEG dengan menggunakan Visual C # .NET (tautan mati per Januari 2018; salin di archive.org dari 2015 )

Jadi ya, identifysebenarnya dapat menentukan pengaturan kualitas JPEG hanya dari file yang dikompresi saja (meskipun hasilnya mungkin tidak selalu sepenuhnya akurat).

sleske
sumber
1
Wah Sangat baik dari Anda untuk memeriksa kode sumber. Keren.
Nathaniel
@Nathaniel, bisakah Anda memilih jawaban ini sebagai jawaban yang diterima, dan bukan jawaban saya? Terima kasih! (Saya tidak dapat menghapus milik saya selama itu diterima.)
Arjan
Itu sedang mencari tabel kuantisasi JPEG yang paling menjelaskan bagaimana tampilan bitstream terkompresi.
jbarlow
5

Seperti Arjan diceritakan identify -verbose myimage.jpgakan melakukannya. Karena imagemagick adalah alat CLI, itu mungkin berguna untuk skrip. Pendekatannya identify -verbose myimage.jpg | grep ...sangat lambat. Saya sarankan menggunakan IM seperti ini

identify -format '%Q' myimage.jpg

Secara besar-besaran lebih cepat.

ManuelSchneid3r
sumber
2

JPEGsnoop adalah alternatif yang bagus untuk ImageMagick identify. Unduhannya cukup kecil dan tersedia dalam format portabel.

Setelah memproses jpg, Anda akan menemukan "Faktor kualitas sekitar" di bawah penanda DQT.

idmadj
sumber
1

Dengan pustaka ImageMagick ++ mudah:

Image magick_image( pathname );
size_t compressionFactor = magick_image.quality(); // 0..100
Valeriy Van
sumber
1

Picasa 3 memiliki panel properti yang menunjukkan kualitas jpeg tetapi saat ini merupakan perangkat yang ditinggalkan. Picasa 3 Dick Masterson

Uğur Gümüşhan
sumber