Laman » bagaimana untuk » Adakah format PNG tidak berfungsi kerana ia mempunyai parameter pemampatan?

    Adakah format PNG tidak berfungsi kerana ia mempunyai parameter pemampatan?

    Format PNG sepatutnya menjadi format lossless, tetapi apabila anda menyimpan imej sebagai fail PNG, anda diminta memilih tahap pemampatan. Adakah ini bermakna bahawa format PNG sebenarnya tidak hilang selepas semua? Siaran Q & A SuperUser hari ini membantu membersihkan kekeliruan untuk pembaca yang ingin tahu.

    Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.

    Soalan

    Pembaca SuperUser pkout ingin mengetahui sama ada kualiti imej PNG dipengaruhi oleh tahap mampatan yang dipilih:

    Seperti yang saya faham, fail PNG menggunakan pemampatan tanpa kehilangan. Walau bagaimanapun, apabila saya menggunakan editor imej seperti Gimp dan cuba menyimpan imej sebagai fail PNG, ia meminta tahap mampatan antara 0 dan 9.

    Sekiranya ia mempunyai parameter mampatan yang mempengaruhi ketepatan visual imej dimampatkan, bagaimana pula dengan lossless PNG? Bolehkah seseorang menjelaskan perkara ini kepada saya? Adakah saya mendapat tingkah laku tanpa tenggang hanya apabila saya menetapkan tahap mampatan kepada 9?

    Adakah terdapat perbezaan dalam kualiti imej bergantung pada tahap mampatan yang anda pilih?

    Jawapan

    Penyumbang SuperUser LordNeckbeard dan jjlin mempunyai jawapan untuk kami. Pertama, LordNeckbeard:

    PNG adalah Mampat, tetapi Lossless

    Tahap mampatan ialah pertukaran antara saiz fail dan kelajuan penyandian / pengekodan. Untuk terlalu umum, walaupun format bukan gambar seperti FLAC mempunyai konsep yang sama.

    Tahap Mampatan yang Berbeza, Output Dedahkan Sama

    Walaupun saiz fail berbeza kerana tahap pemampatan yang berbeza, output dekod yang sebenarnya akan sama. Anda boleh membandingkan hash MD5 dari output decoded dengan ffmpeg menggunakan MD5 muxer. Ini yang terbaik ditunjukkan dengan beberapa contoh.

    Buat Fail PNG

    • Secara lalai, ffmpeg akan menggunakan -compression_level 100 untuk output PNG.
    • Ujian yang cepat dan ceroboh menunjukkan bahawa 100 (paras mampatan tertinggi) mengambil kira tiga kali lebih lama untuk menyandarkan dan lima kali lebih lama untuk menyahkod daripada 0 (tahap mampatan terendah) dalam contoh ini.

    Bandingkan Saiz Fail

    Dekode PNG Files dan Tunjukkan MD5 Hashes

    Oleh kerana kedua-dua hash adalah sama, anda boleh yakin bahawa output yang didekodkan (fail mentah yang tidak dikompres) adalah sama.

    Diikuti dengan jawapan dari jjlin:

    PNG tiada kerugian. GIMP kemungkinan besar tidak menggunakan pilihan perkataan terbaik dalam kes ini.

    Fikirkan ia sebagai kualiti pemampatan atau tahap mampatan. Dengan pemampatan yang lebih rendah, anda akan mendapat fail yang lebih besar, tetapi memerlukan sedikit masa untuk menghasilkan, sedangkan dengan pemampatan yang lebih tinggi, anda akan mendapatkan file yang lebih kecil yang memerlukan waktu lebih lama untuk menghasilkan.

    Biasanya anda mendapat pulangan yang berkurangan, iaitu tidak banyak penurunan saiz berbanding dengan peningkatan masa yang diperlukan ketika naik ke tahap mampatan yang tertinggi, tetapi terpulang kepada anda.


    Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.