Apakah Format PNG Lossless Karena Memiliki Parameter Kompresi?

Format PNG seharusnya menjadi format lossless, tetapi saat Anda menyimpan gambar sebagai file PNG, Anda akan diminta untuk memilih tingkat kompresi. Apakah ini berarti bahwa format PNG sebenarnya bukan lossless? Posting Tanya Jawab SuperUser hari ini membantu menjernihkan kebingungan bagi pembaca yang penasaran.

Sesi Tanya & Jawab hari ini hadir atas kebaikan SuperUser — subdivisi Stack Exchange, pengelompokan situs web T&J berbasis komunitas.

Pertanyaan

Pembaca SuperUser pkout ingin mengetahui apakah kualitas gambar PNG dipengaruhi oleh tingkat kompresi yang dipilih:

Seperti yang saya pahami, file PNG menggunakan kompresi lossless. Namun, ketika saya menggunakan editor gambar seperti Gimp dan mencoba menyimpan gambar sebagai file PNG, ia meminta tingkat kompresi berkisar antara 0 dan 9.

Jika memiliki parameter kompresi yang memengaruhi presisi visual dari gambar yang dikompresi, bagaimana PNG lossless? Bisakah seseorang menjelaskan hal ini kepada saya? Apakah saya mendapatkan perilaku lossless hanya jika saya menyetel level kompresi ke 9?

Apakah ada perbedaan kualitas gambar tergantung pada tingkat kompresi yang Anda pilih?

Jawabannya

Kontributor SuperUser LordNeckbeard dan jjlin punya jawabannya untuk kami. Pertama, LordNeckbeard:

PNG Terkompresi, tetapi Lossless

Tingkat kompresi adalah trade-off antara ukuran file dan kecepatan encoding / decoding. Untuk terlalu menggeneralisasi, bahkan format non-gambar seperti FLAC memiliki konsep serupa.

Tingkat Kompresi Berbeda, Output Dekodekan Sama

Meskipun ukuran file berbeda karena tingkat kompresi yang berbeda, hasil dekode sebenarnya akan sama. Anda dapat membandingkan hash MD5 dari keluaran yang didekodekan dengan ffmpeg menggunakan muxer MD5. Ini paling baik ditunjukkan dengan beberapa contoh.

Buat File PNG

  • Secara default, ffmpeg akan menggunakan -compression_level 100 untuk keluaran PNG.
  • Pengujian cepat dan ceroboh menunjukkan bahwa 100 (tingkat kompresi tertinggi) membutuhkan waktu sekitar tiga kali lebih lama untuk dikodekan dan lima kali lebih lama untuk mendekode daripada 0 (tingkat kompresi terendah) dalam contoh ini.

Bandingkan Ukuran File

Dekode File PNG dan Tampilkan Hash MD5

Karena kedua hash sama, Anda dapat yakin bahwa keluaran yang didekodekan (file mentah yang tidak dikompresi) persis sama.

Diikuti oleh jawaban dari jjlin:

PNG tidak memiliki kerugian. GIMP kemungkinan besar tidak menggunakan pilihan kata terbaik dalam kasus ini.

Anggap saja sebagai kualitas kompresi atau tingkat kompresi . Dengan kompresi yang lebih rendah, Anda mendapatkan file yang lebih besar, tetapi waktu pembuatannya lebih sedikit, sedangkan dengan kompresi yang lebih tinggi, Anda mendapatkan file yang lebih kecil yang membutuhkan waktu lebih lama untuk diproduksi.

Biasanya Anda mendapatkan hasil yang semakin berkurang, yaitu tidak banyak penurunan ukuran dibandingkan dengan peningkatan waktu yang diperlukan saat naik ke tingkat kompresi tertinggi, tetapi itu terserah Anda.

Punya sesuatu untuk ditambahkan ke penjelasannya? Suarakan di komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang paham teknologi? Lihat utas diskusi lengkap di sini.