รูปแบบ PNG ไม่สูญเสียเนื่องจากมีพารามิเตอร์การบีบอัดหรือไม่

รูปแบบ PNG ควรเป็นรูปแบบที่ไม่มีการสูญเสีย แต่เมื่อคุณบันทึกภาพเป็นไฟล์ PNG ระบบจะขอให้คุณเลือกระดับการบีบอัด นี่หมายความว่าจริงๆแล้วรูปแบบ PNG นั้นไม่สูญเสียไปเลยใช่หรือไม่? โพสต์ SuperUser Q&A วันนี้ช่วยขจัดความสับสนสำหรับผู้อ่านที่อยากรู้อยากเห็น

เซสชันคำถามและคำตอบของวันนี้มาถึงเราโดยได้รับความอนุเคราะห์จาก SuperUser ซึ่งเป็นแผนกย่อยของ Stack Exchange ซึ่งเป็นกลุ่มเว็บไซต์ถาม & ตอบที่ขับเคลื่อนโดยชุมชน

คำถาม

pkout ผู้อ่าน SuperUser ต้องการทราบว่าคุณภาพของภาพ PNG ได้รับผลกระทบจากระดับการบีบอัดที่เลือกหรือไม่:

อย่างที่ฉันเข้าใจไฟล์ PNG ใช้การบีบอัดแบบไม่สูญเสียข้อมูล อย่างไรก็ตามเมื่อฉันใช้โปรแกรมแก้ไขภาพเช่น Gimp และพยายามบันทึกภาพเป็นไฟล์ PNG ระบบจะขอระดับการบีบอัดระหว่าง 0 ถึง 9

หากมีพารามิเตอร์การบีบอัดที่ส่งผลต่อความแม่นยำในการมองเห็นของภาพที่บีบอัดแล้ว PNG จะไม่สูญเสียอย่างไร ใครช่วยอธิบายเรื่องนี้ให้ฉันฟังหน่อยได้ไหม ฉันจะได้รับพฤติกรรมที่ไม่สูญเสียเมื่อฉันตั้งค่าระดับการบีบอัดเป็น 9 หรือไม่?

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

คำตอบ

ผู้สนับสนุน SuperUser LordNeckbeard และ jjlin มีคำตอบให้เรา ก่อนอื่น LordNeckbeard:

PNG ถูกบีบอัด แต่ไม่สูญเสีย

ระดับการบีบอัดเป็นการแลกเปลี่ยนระหว่างขนาดไฟล์และความเร็วในการเข้ารหัส / ถอดรหัส เพื่อให้เข้าใจโดยทั่วไปมากเกินไปแม้แต่รูปแบบที่ไม่ใช่รูปภาพเช่น FLAC ก็มีแนวคิดที่คล้ายกัน

ระดับการบีบอัดที่แตกต่างกันเอาต์พุตที่ถอดรหัสเดียวกัน

แม้ว่าขนาดไฟล์จะแตกต่างกันเนื่องจากระดับการบีบอัดที่แตกต่างกัน แต่เอาต์พุตที่ถอดรหัสจริงจะเหมือนกัน คุณสามารถเปรียบเทียบแฮช MD5 ของเอาต์พุตที่ถอดรหัสกับ ffmpeg โดยใช้ MD5 muxer สิ่งนี้แสดงได้ดีที่สุดพร้อมกับตัวอย่างบางส่วน

สร้างไฟล์ PNG

  • ตามค่าเริ่มต้น ffmpeg จะใช้ -compression_level 100 สำหรับเอาต์พุต PNG
  • การทดสอบอย่างรวดเร็วและเลอะเทอะแสดงให้เห็นว่า 100 (ระดับการบีบอัดสูงสุด) ใช้เวลาในการเข้ารหัสนานกว่าประมาณสามเท่าและถอดรหัสได้นานกว่า 0 ถึง 5 เท่า (ระดับการบีบอัดต่ำสุด) ในตัวอย่างนี้

เปรียบเทียบขนาดไฟล์

ถอดรหัสไฟล์ PNG และแสดงแฮช MD5

เนื่องจากแฮชทั้งสองเหมือนกันคุณจึงมั่นใจได้ว่าเอาต์พุตที่ถอดรหัส (ไฟล์ดิบที่ไม่มีการบีบอัด) จะเหมือนกันทุกประการ

ตามด้วยคำตอบจาก jjlin:

PNG ไม่สูญเสีย GIMP มักจะไม่ใช้ตัวเลือกที่ดีที่สุดในการใช้ถ้อยคำในกรณีนี้

คิดว่ามันเป็นคุณภาพของการบีบอัดหรือระดับของการบีบอัด ด้วยการบีบอัดที่ต่ำลงคุณจะได้ไฟล์ที่ใหญ่ขึ้น แต่ใช้เวลาในการผลิตน้อยลงในขณะที่การบีบอัดที่สูงขึ้นคุณจะได้ไฟล์ขนาดเล็กที่ใช้เวลาในการผลิตนานขึ้น

โดยปกติแล้วคุณจะได้รับผลตอบแทนลดลงกล่าวคือไม่ได้ลดลงมากนักเมื่อเทียบกับเวลาที่เพิ่มขึ้นเมื่อขึ้นไปถึงระดับการบีบอัดสูงสุด แต่ขึ้นอยู่กับคุณ

มีสิ่งที่จะเพิ่มคำอธิบาย? ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange ที่เชี่ยวชาญด้านเทคโนโลยีอื่น ๆ หรือไม่? ดูกระทู้สนทนาฉบับเต็มได้ที่นี่