จะหาคุณภาพ JPG ได้อย่างไร?


16

เมื่อฉันบันทึกไฟล์ JPG ด้วย GIMP ฉันสามารถปรับคุณภาพที่บันทึกได้ตั้งแต่ 0-100 (ฉันใช้ 89) ดูเหมือนว่าฉันจะใช้แอพเพื่อดูว่าหมายเลขนี้อยู่ในไฟล์ที่บันทึกไว้ แต่ถ้าฉันทำฉันไม่สามารถใช้ชีวิตของฉันเพื่อหาว่ามันคืออะไร ข้อเสนอแนะใด ๆ เกี่ยวกับสิ่งที่จะใช้?


2
เพียงเพื่อให้แน่ใจว่ามันเป็นที่รู้จักกัน: การตั้งค่าคุณภาพของการใช้งานที่แตกต่างกันจะไม่เทียบเท่าโดยทั่วไป: faqs.org/faqs/jpeg-faq/part1/section-5.html ทั้ง GIMP และ ImageMagick ควรใช้ระดับคุณภาพ IJG
Michael Schumacher

คำตอบ:


22

เมื่อบันทึกแล้วคุณจะไม่สามารถบอกคุณภาพได้อีก

(การตั้งค่าคุณภาพในขณะที่บันทึกเพียงบอกซอฟต์แวร์ว่าคุณยอมรับการสูญเสียได้มากเพียงใด แต่บันทึกครั้งเดียว: สิ่งที่หายไปจะหายไปคุณต้องการให้มนุษย์พูดว่าสิ่งที่ดูดี)

อืมฉันคิดว่าฉันคิดผิด ผมยังคิดว่าข้างต้นถูกต้อง แต่ImageMagick 's identifyพิสูจน์ฉันผิด?

ระบุ -verbose myimage.jpg

ภาพ: myimage.jpg
  รูปแบบ: JPEG (รูปแบบกลุ่มผู้เชี่ยวชาญถ่ายภาพร่วม)
  คลาส: DirectClass
  เรขาคณิต: 358x240 + 0 + 0
  ความละเอียด: 300x300
  [ ... ]
  การบีบอัด: JPEG
  คุณภาพ: 90
  ปฐมนิเทศ: ไม่ได้กำหนด
  [ ... ]

ฉันไม่รู้ว่าภาพในการทดสอบของฉันถูกบันทึกไว้อย่างไร แต่มันไม่มีข้อมูล EXIF คุณภาพยังคงถูกเก็บไว้ในภาพหรือไม่?


คุณไม่สามารถทดลองเปลี่ยนเป็นคุณสมบัติอื่นได้หรือไม่ ฉันคิดว่ามันยากที่จะเชื่อเว้นแต่ ImageMagick จะเก็บข้อมูลส่วนตัวบางอย่างไว้ใน jpg (ดังนั้นนี่อาจไม่สามารถทำงานกับแพ็คเกจอื่นได้)
harrymc

น่าสนใจ ฉันจะรอเพื่อดูว่ากระทะนี้ออก
นาธาเนียล

1
+1 ใช่ imagemagick ใช้งานได้ ฉันสามารถเปลี่ยนคุณภาพ jpeg ซ้ำ ๆ และใช้การระบุเพื่อดูการเปลี่ยนแปลง มันใช้งานได้ถ้าฉันใช้การแปลง (อีกอันสำหรับความไม่เสถียรของ imagemagick) หรือเครื่องมืออื่นเช่น MS Photo Editor
DaveParillo

1
ImageMagick กำลังทำสิ่งที่แตกต่าง มันให้การประเมินแทนที่จะอ่านสิ่งที่ซอฟต์แวร์ต้นฉบับของคุณทำ คำตอบดั้งเดิมที่ขีดฆ่าแล้วของคุณถูกต้องกว่าจริงๆ ดูคำตอบของ @ sleske
mattdm

26

วิธีเพิ่มคำตอบของ Arjan:

ImageMagick นั้นidentifyดูเหมือนจะมองเข้าไปในภาพ JPEG เพื่อคาดเดาการตั้งค่าคุณภาพที่ใช้ในการเข้ารหัส

รหัสที่มาของ ImageMagick (เชียร์สำหรับซอฟต์แวร์ฟรี :-)) มีเส้น :

/*
  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บรรทัดที่ 843ff. ในซอร์สโค้ดของ ImageMagick เวอร์ชันล่าสุดของฉัน)

ฉันไม่เข้าใจเกี่ยวกับ JPEG เพียงพอที่จะเข้าใจจริงๆ แต่ดูเหมือนว่าจะทำสิ่งที่อธิบายไว้ในบทความนี้:

กำหนดปัจจัยด้านคุณภาพ JPEG โดยใช้ Visual C # .NET (ลิงก์ตายตั้งแต่ Januar 2018;คัดลอกบน archive.org จาก 2015 )

ดังนั้นได้identifyจริงสามารถกำหนดการตั้งค่าคุณภาพของ JPEG เพียงแค่จากไฟล์บีบอัดเพียงอย่างเดียว (แม้ว่าผลลัพธ์อาจไม่แม่นยำเสมอไป)


1
โว้ว. คุณดีมากที่จะตรวจสอบรหัสต้นฉบับ เย็น.
นาธาเนียล

@ นาธาเนียลคุณช่วยเลือกคำตอบนี้ให้เป็นคำตอบแทนที่จะเป็นของฉันได้ไหม? ขอบคุณ! (ฉันไม่สามารถลบของฉันได้ตราบใดที่ยอมรับ)
Arjan

มันกำลังค้นหาตาราง quantization JPEG ที่บัญชีที่ดีที่สุดสำหรับลักษณะบิตสตรีมบีบอัด
jbarlow

5

ในฐานะที่เป็น Arjan metioned identify -verbose myimage.jpgจะทำมัน imagemagick เป็นเครื่องมือ CLI มันอาจมีประโยชน์สำหรับการเขียนสคริปต์ วิธีidentify -verbose myimage.jpg | grep ...นี้ช้ามาก ฉันแนะนำให้ใช้ IM เช่นนี้

identify -format '%Q' myimage.jpg

มันเร็วขึ้นอย่างหนาแน่น


2

JPEGsnoopเป็นทางเลือกที่ดีที่จะ identifyImageMagick การดาวน์โหลดนั้นค่อนข้างเล็กและมีในรูปแบบพกพา

หลังจากประมวลผล jpg คุณจะพบ "ตัวคูณคุณภาพโดยประมาณ" ใต้เครื่องหมาย DQT



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.