Mengapa orang menggunakan gambar JPG?

17

Saya melihat gambar JPG di mana-mana. Tapi kenapa?

File PNG memiliki opacity, sedangkan JPG tidak. Saya sudah mencoba mengekspor beberapa gambar ke PNG dan JPG untuk membandingkan ukuran, dan keduanya cocok atau PNG lebih kecil (tergantung pada gambar tentu saja).

masukkan deskripsi gambar di sini

Ini adalah gambar JPG 512x512 yang bertuliskan "JPG"

masukkan deskripsi gambar di sini

Dan ini adalah gambar PNG 512x512 yang bertuliskan "PNG".

JPG adalah 31.7kb dan PNG adalah 25.9kb

Jadi apa yang menyebabkannya?

JediBurrell
sumber
3
Sesuatu yang juga harus Anda ketahui adalah bahwa .png itu lossless, sedangkan .jpg tidak. Jadi .png lebih cocok untuk sumber-gambar, sedangkan .jpg lebih cocok untuk publikasi.
Tidak ada yang
1
@Nobody PNG bisa lossy atau lossless. Tergantung bagaimana Anda mengekspornya.
DA01
8
FYI, Anda jarang menggunakan JPG untuk seni garis, seperti contoh yang Anda gunakan di sini. Jadi berdasarkan murni pada contoh-contoh ini, Anda tidak akan menggunakan JPG. Namun, jika ini adalah foto, Anda akan menyadari bahwa Anda mendapatkan hasil yang sama sekali berbeda.
DA01
7
Saya benar-benar tidak percaya pertanyaan ini bertahan lebih dari 10 detik.
Pakaian biasa
2
@ DA01 PNG tidak pernah lossy, tetapi Anda bisa memanipulasi gambar sebelum mengekspornya ke PNG untuk membuatnya lebih kecil. Spesifikasi PNG tidak tahu apa-apa tentang ini.
Tidak ada yang

Jawaban:

35

Karena mereka jauh lebih baik dalam mengompresi gambar yang memiliki banyak warna dan bentuk tidak teratur, seperti foto.

Sudahkah Anda mencoba epxeriment yang sama dengan yang Anda lakukan, tetapi kemudian dengan foto? .Png kemungkinan besar akan terlihat lebih besar daripada .jpg, terlepas dari faktor kompresi .jpg.

Contoh:

gambar png
Gambar .png, 110rb

jpeg dengan kualitas 100
.jpg pada kualitas 100%, 63k

jpeg dengan kualitas 30
.jpg pada kualitas 30%, 9k sangat sedikit

Jika Anda melihat lebih dekat, Anda akan melihat beberapa artefak pada kualitas 30% .jpg, tetapi itu sebagian besar karena tepi keras bola lampu dengan latar belakang hijau mulus tidak cocok dengan algoritma kompresi. Anda dapat memiliki gambar biasa dikurangi hingga bahkan 10 atau 5% kualitas tanpa kehilangan Anda akan melihat sekilas.

Vincent
sumber
3
FWIW: Setelah mengoptimalkan PNG, ia memiliki 34 KB tanpa kehilangan yang bisa dikenali.
Mario
Wow, saya tidak pernah tahu itu. Saya mencoba mengonversi foto yang saya ambil ke PNG dan berubah dari 550k menjadi 2933k. Apakah Anda tahu apa yang menyebabkannya?
JediBurrell
10
@JediBurrell kompresi PNG selalu lossless (AFAIK), sedangkan kompresi JPG pada akhirnya akan menjatuhkan informasi gambar. Dalam kasus Anda, gambar JPG yang sudah dikompres meskipun gambar yang terlihat baik akan mengandung tepi di sekitar masing-masing ember (kotak kecil terkompresi yang membentuk gambar JPG), dan PNG mengambil artefak ini sehingga tidak hilang. Karenanya, PNG Anda jauh lebih besar dari JPG asli Anda. Mengkompresi ulang JPG menggunakan JPG akan memperburuk ini berkali-kali lipat - efeknya disebut "meta blocking".
Jay Versluis
2
@JediBurrell Jika Anda tertarik pada detail teknis dan matematika, Anda dapat menonton video ini dengan Computerphile.
Paul Manta
2
"latar belakang hijau mulus tidak cocok dengan algoritma kompresi": Ini kebalikannya, gradien diwakili dengan sangat baik oleh JPEG, sementara tepi yang keras tidak, menghasilkan artefak di dekatnya. Untuk yang penasaran, baca tentang Fourier mengubah sinyal persegi.
Lloeki
13

JPEG memiliki dukungan dari industri fotografi dan mendahului PNG sekitar setengah lusin tahun, sementara PNG dirancang sebagai pengganti GIF, yang agak dilindungi dengan penuh semangat oleh CompuServe. Orang-orang dituntut karena menggunakan GIF di situs web mereka, misalnya, hanya karena mereka tidak menggunakan program yang dilisensikan oleh CompuServe untuk membuat gambar-gambar itu.

Sejak awal, JPEG dirancang untuk memulihkan beberapa ruang dengan membuat file lebih kecil, dengan mengorbankan kualitas pixel-perfect. Bahkan pengaturan Q ke 100 akan menyebabkan artefak minor, sebagian besar tidak terlihat - kerusakan dilakukan, dan setiap kali tambahan file diubah dan disimpan, kerusakan lebih lanjut akan terjadi. Namun, kecuali Anda melakukannya berkali- kali, Anda mungkin tidak akan pernah melihat efeknya kecuali Anda mencarinya.

PNG, di sisi lain, benar-benar tidak rugi. Setiap piksel direproduksi dengan setia setiap kali, tidak peduli berapa kali file dimodifikasi dan disimpan. Namun, ada batas seberapa baik Anda dapat memampatkan data tanpa kehilangan, meskipun PNG menggunakan beberapa trik untuk mengemas informasi sebanyak mungkin menjadi beberapa byte data. JPEG kualitas tinggi mungkin akan memiliki ukuran yang sama dengan PNG tanpa optimasi atau bahkan lebih besar. Ketika PNG mulai mengoptimalkan, katakanlah, dengan menggunakan filter atau menyesuaikan ukuran jendela, file menjadi lebih kecil tanpa kehilangan, sementara JPEG harus mulai membuang informasi visual untuk mengikutinya.

Jadi, mengapa JPEG digunakan? Bagaimanapun, ini umumnya lebih rendah dalam hal kesetiaan dan ruang penyimpanan. Alasan utama, tentu saja, adalah standar industri dan memiliki dukungan yang sangat luas. Hampir setiap kamera di dunia menggunakan RAW (secara harfiah, data mentah), atau JPEG. Ada prosesor data perangkat keras yang terpasang di dalam kamera tersebut untuk mengompresi data JPEG secepat mungkin, dll.

Anda akan menemukan ini adalah alasan yang sama mengapa GIF masih ada di mana-mana. Sebagian besar perangkat lunak mendukung GIF, sementara PNG menikmati dukungan yang lebih rendah pada perangkat lunak yang lebih lama (misalnya versi Internet Explorer yang lebih lama membutuhkan plugin untuk menampilkan file PNG). Meskipun memiliki dukungan warna yang buruk, ia mendukung animasi, sesuatu yang tidak dilakukan PNG (ada format file terkait, APNG, yang tidak pernah cukup seperti PNG). GIF masih tetap menjadi juara gambar animasi, karena ini adalah satu-satunya format file yang dapat melakukannya dengan dukungan luas.

Biaya untuk berubah dari JPEG ke PNG akan menjadi penghalang dari calon peranti keras. Kamera akan membutuhkan prosesor baru yang dibangun untuk mendukung kompresi PNG cepat, misalnya, karena mereka sulit dikodekan untuk menggunakan JPEG sekarang. Kamera lama Anda tidak akan berharga, karena Anda harus membeli yang baru dengan chip PNG bawaan. Itu juga berarti Anda harus meyakinkan produsen untuk menentang standar industri dan mulai membuat perangkat seperti itu, yang berarti harus ada cukup permintaan untuk membenarkannya, dan kamera semacam itu pada awalnya akan lebih mahal daripada yang berbasis JPEG. rekan-rekan. Sangat sulit untuk mengubah suatu industri.

phyrfox
sumber
PNG berpotensi lossless. Perangkat lunak tabungan dapat memilih untuk kehilangan data yang sulit untuk format yang dapat dikompresi lebih baik. Sifat vavelet dari jpeg membuatnya tidak mungkin menjadi lossless.
joojaa
@ joojaa Bisakah Anda mencadangkan pernyataan bahwa kompresi PNG "dapat memilih untuk kehilangan data sulit"?
CJ Dennis
@ joojaa JPEG menggunakan kompresi DCT, bukan wavelet. Anda mungkin berpikir tentang JPEG 2000.
bcrist
7
Ini pemahaman saya bahwa pengurangan warna terjadi sebelum gambar dilewatkan ke PNG codec. Hanya karena suatu format mampu menyimpan data yang sudah lossy tidak menjadikannya lossy. Mengubah RGB 32-bit dengan gambar Alpha ke gambar hitam-putih 1-bit akan kehilangan banyak data tetapi bukan PNG yang melakukan itu. Pengurangan kedalaman warna adalah konversi lossy, bukan kompresi lossy .
CJ Dennis
2
Kesalahan saya DCT itu. Maksud saya adalah bahwa meskipun PNG lossless, tidak semua pengoptimal PNG! Jadi tanpa mengetahui apa yang Anda gunakan, Anda tidak tahu apakah prosesnya macet atau tidak. Jadi pertanyaan tentang nonlossyness tidak sesederhana yang dipikirkan orang. Sama seperti perubahan kedalaman warna terjadi sebelum menyimpan pengoptimal PNG dapat mengubah gambar dengan cara lain sebelum menyimpan, untuk jejak yang lebih kecil. @JCDennis Crunchers ini ada hanya lihat halaman manualnya.
joojaa
7

Sesuatu yang tidak disebutkan dengan sangat rinci adalah cara kerja algoritma kompresi ini. JPEG ditargetkan langsung pada foto yang sedikit perubahan warna pikselnya tidak terlihat. PNG lebih ditargetkan untuk gambar fabrikasi yang berisi area besar dari satu warna di mana kompresi diambil sepenuhnya seperti dalam contoh Anda dari foto putih semua besar dengan huruf hitam polos. Jika Anda mengambil foto yang sama dan menempatkan latar belakang putih memudar dari putih menjadi abu-abu secara merata di sisi gambar ke sisi ukuran png akan meningkat secara drastis dan jpg mungkin akan memiliki sedikit perubahan. Saya melakukan beberapa coding sekitar 10 tahun yang lalu secara langsung dengan kedua format ini untuk mendekompres tipe file ini menjadi bmps. JPEG sangat canggih dan kompleks. PNG sangat sederhana dan hanya benar-benar efektif pada gambar tertentu di mana warna tidak berubah dalam garis horizontal

Ryan
sumber
1
Sudahkah Anda mencoba ini? PNG tidak hanya menjalankan pengkodean panjang dan jauh lebih canggih dari yang Anda sarankan. Ini menggunakan algoritma adaptif dan secara efektif akan memadatkan area padat dan pola berulang.
z7sg Ѫ