İnsanlar neden JPG resimleri kullanıyor?


17

Her yerde JPG görüntüleri görüyorum. Ama neden?

PNG dosyaları opaklığa sahipken, JPG'lerde yoktur. Boyutu karşılaştırmak için PNG ve JPG'ye bazı görüntüleri dışa aktarmayı denedim ve ikisi de eşleşiyor ya da PNG daha küçük (elbette görüntüye bağlı olarak).

resim açıklamasını buraya girin

512x512 JPG boyutunda bir resim.

resim açıklamasını buraya girin

Ve bu 512x512 PNG resmi "PNG" diyor.

JPG 31.7 kb ve PNG 25.9 kb idi

Öyleyse ne veriyor?


3
Bilmeniz gereken bir şey de .png'nin kayıpsız, ancak .jpg'nin olmamasıdır. Yani .png kaynak görüntüler için daha uygundur, .jpg ise yayın için daha uygundur.
Kimse

1
@ Hiç kimse PNG kayıp veya kayıp olamaz. Nasıl dışa aktardığınıza bağlı olarak.
DA01

8
Bilginize, burada kullandığınız örnekler gibi JPG'yi hat sanatı için nadiren kullanırsınız. Bu örneklerde dayalıyken Yani, olmaz JPG kullanın. Ancak bunlar fotoğraf olsaydı, tamamen farklı sonuçlar elde ettiğinizi anlayacaksınız.
DA01

7
Bu sorunun 10 saniyeden fazla sürdüğüne ciddi şekilde inanamıyorum.
sivil polis

2
@ DA01 PNG asla kaybolmaz, ancak PNG'yi dışa aktarmadan önce görüntüyü küçültmek için kayıtsız olarak değiştirebilirsiniz. PNG spesifikasyonu bununla ilgili hiçbir şey bilmiyor.
Kimse

Yanıtlar:


35

Çünkü fotoğraflar gibi çok fazla renk ve düzensiz şekle sahip resimleri sıkıştırmakta çok daha iyi durumdalar.

Aynı epxeriment'i denediniz, ama sonra bir fotoğrafla mı denediniz? .Jpg'nin sıkıştırma faktörü ne olursa olsun, .png büyük olasılıkla herhangi bir .jpg'den belirgin şekilde daha büyük olacaktır.

Misal:

png resmi
.png resim, 110k

100 kalitede jpeg
% 100 kalitede .jpg, 63k

30 kalitede jpeg
.jpg% 30 kalitede, 9k

Yakından bakarsanız,% 30 kalite .jpg üzerinde bazı eserler göreceksiniz, ancak bunun nedeni çoğunlukla ampulün düz yeşil arka plana karşı sert kenarının sıkıştırma algoritmasına çok iyi borç vermemesi. Bir bakışta fark edeceğiniz herhangi bir kayıp olmadan düzenli resimlerinizin% 10 veya% 5'e düşürülmesini sağlayabilirsiniz.


3
FWIW: PNG'yi optimize ettikten sonra tanınabilir bir kayıp olmadan 34 KB'ye sahip.
Mario

Vay canına, bunu hiç bilmiyordum. Çektiğim bir fotoğrafı PNG'ye dönüştürmeyi denedim ve 550k'dan 2933k'ye çıktı. Bu davanın ne olduğunu biliyor musunuz?
JediBurrell

10
@JediBurrell PNG sıkıştırması her zaman kayıpsızdır (AFAIK), oysa JPG'nin sıkıştırması sonunda görüntü bilgilerini düşürür. Sizin durumunuzda, iyi görünümlü bir görüntü olsa da, zaten JPG sıkıştırılmış bir görüntü, her bir kova etrafında kenarlar içerecektir (JPG görüntüsü oluşturan sıkıştırılmış küçük kareler) ve PNG bu eserleri kaybolmamaları için seçer. Dolayısıyla, PNG'niz orijinal JPG'nizden çok daha büyüktür. Bir JPG'yi JPG kullanarak yeniden sıkıştırmak bunu birçok kez daha da kötüleştirir - efekt "meta engelleme" olarak adlandırılır.
Jay Versluis

2
@JediBurrell Teknik ve matematiksel detaylarla ilgileniyorsanız, Computerphile tarafından bu videoyu izleyebilirsiniz .
Paul Manta

2
"pürüzsüz yeşil arka plan sıkıştırma algoritmasına çok iyi kredi vermez": Bunun tam tersi, degradeler JPEG tarafından çok iyi temsil edilirken, sert kenarlar yakınlarda yapay nesneler üretmez. Meraklı için, Fourier'in kare sinyalini dönüştürmesini okuyun.
Lloeki

13

JPEG, fotoğraf endüstrisinden destek alıyor ve PNG'yi yarım düzine yıl kadar geride bırakıyor, PNG ise CompuServe tarafından gayretle korunan GIF'in yerini alacak şekilde tasarlandı. Örneğin, web sitelerinde GIF kullanmaktan dava açıldı, örneğin, sadece bu görüntüleri yapmak için CompuServe tarafından lisanslanan bir programı kullanmadığı için.

JPEG en başından beri, piksel mükemmel kalite pahasına dosyaları daha küçük hale getirerek biraz alan kurtarmak için tasarlandı. Q'nun 100'e ayarlanması bile küçük, çoğunlukla görünmez eserlere neden olur - hasar yapılır ve dosya her değiştirildiğinde ve kaydedildiğinde daha fazla hasar meydana gelir. Ancak, çok fazla yapmazsanız , aramaya gitmedikçe muhtemelen etkisini asla fark etmeyeceksiniz.

Öte yandan PNG, tamamen kayıpsızdır. Her piksel, dosyanın kaç kez değiştirilip kaydedildiğine bakılmaksızın, her seferinde aslına uygun şekilde çoğaltılır. Bununla birlikte, verileri kayıpsız olarak ne kadar iyi sıkıştırabileceğiniz konusunda bir sınır var, ancak PNG mümkün olduğunca az bayt veriye kadar çok bilgi toplamak için birkaç numara kullanıyor. Yüksek kaliteli bir JPEG muhtemelen optimizasyon olmadan bir PNG ile aynı boyutta veya daha büyük olacaktır. PNG, filtreleri kullanarak veya pencere boyutlarını ayarlayarak optimize etmeye başladığında, dosya kayıpsız olarak küçülürken, JPEG'nin korumak için görsel bilgileri atmaya başlaması gerekir.

Peki, neden JPEG kullanılıyor? Sonuçta, sadakat ve depolama alanı açısından genellikle daha düşüktür. Ana sebep, elbette, bir endüstri standardı olması ve çok geniş bir desteğe sahip olmasıdır. Dünyadaki hemen hemen her kamera RAW (kelimenin tam anlamıyla ham veri) veya JPEG kullanır. JPEG verilerini olabildiğince hızlı sıkıştırmak için bu kameralarda yerleşik olarak bulunan donanım veri işlemcileri vardır.

GIF'in her yerde hareketsiz olmasının aynı nedeni olduğunu göreceksiniz. Çoğu yazılım GIF'i desteklerken, PNG eski yazılımlarda daha az desteğe sahiptir (örneğin, eski Internet Explorer sürümleri PNG dosyalarını göstermek için bir eklenti gerektirir). Berbat renk desteğine sahip olmasına rağmen, animasyonları destekliyor, PNG'nin yapamadığı bir şey (PNG'nin yaptığı gibi asla çıkmamış ilgili bir dosya formatı olan APNG var). GIF, yaygın destek ile bunu yapabilen tek dosya formatı olduğu için animasyonlu görüntülerin şampiyonu olmaya devam ediyor.

JPEG'den PNG'ye geçmenin maliyeti, bir donanım potansiyelinden engelleyici olacaktır. Örneğin, kameraların hızlı PNG sıkıştırmasını desteklemek için oluşturulmuş yeni işlemcilere ihtiyacı olacaktır, çünkü şu anda JPEG kullanmak için kodlanmışlardır. Eski fotoğraf makineleriniz değersiz olacaktır, çünkü yerleşik bir PNG çipi ile yeni bir tane satın almanız gerekir. Bu aynı zamanda bir üreticiyi endüstri standartlarına karşı çıkmaya ve bu tür cihazları üretmeye ikna etmeniz gerektiği anlamına gelir, bu da bunu haklı çıkarmak için yeterli talep olması gerektiği anlamına gelir ve bu tür kameralar başlangıçta JPEG tabanlı olanlardan daha pahalı olur. muadilleri. Bir endüstriyi değiştirmek çok zor.


PNG potansiyel olarak kayıpsızdır. Tasarruf yazılımı daha iyi sıkıştırılabilir format için verileri zor kaybetmeyi seçebilir. Jpeg'in vavelet doğası kayıpsız olmasını imkansız hale getirir.
joojaa

@joojaa PNG sıkıştırmasının "zor verileri kaybetmeyi seçebileceği" ifadesini yedekleyebilir misiniz?
CJ Dennis

@joojaa JPEG, dalgacık değil DCT sıkıştırması kullanır. JPEG 2000 düşünüyor olabilirsiniz.
bcrist

7
Anladığım kadarıyla, görüntü PNG kodekine geçmeden önce renk azaltma gerçekleşiyor. Bir biçimin zaten kayıplı verileri depolayabilmesi onu kayıplı yapmaz. Alpha görüntüsüne sahip 32 bit RGB'yi 1 bit siyah beyaz görüntüye değiştirmek çok fazla veri kaybeder, ancak bunu yapan PNG değildir. Renk derinliği azaltma kayıplı bir dönüşümdür, kayıplı bir sıkıştırma değildir .
CJ Dennis

2
Benim hatam DCT. Demek istediğim, PNG kayıpsızken, tüm PNG iyileştiricileri değil! Böylece ne kullandığınızı bilmeden sürecin kayıplı olup olmadığını bilmiyorsunuz. Dolayısıyla, kayıtsızlık hakkındaki soru düşündüğü kadar basit değildir. PNG iyileştiricileri kaydetmeden önce renk derinliği değişikliklerinin olması gibi, daha az yer kaplaması için kaydetmeden önce görüntüleri başka şekillerde değiştirebilir. @JCDennis Bu kırıcılar sadece kullanım sayfalarına bakınız.
Joojaa

7

Ayrıntılı olarak bahsedilmeyen bir şey, bu sıkıştırma algoritmalarının çalışma şeklidir. JPEG doğrudan piksel renginde ufak değişikliklerin fark edilmediği fotoğraflara hedeflenir. PNG, düz siyah harflerle büyük beyaz bir fotoğraf örneğinde olduğu gibi sıkıştırmadan tam olarak yararlanıldığı tek bir rengin geniş alanlarını içeren fabrikasyon görüntüler için daha fazla hedeflenir. Aynı fotoğrafı çektiyseniz ve beyaz arka planı görüntüden yana doğru beyazdan griye solmaya koyarsanız, png boyutu önemli ölçüde artar ve jpg muhtemelen küçük bir değişiklik olur. Ben yaklaşık 10 yıl önce bazı bu kodları bmps içine sıkıştırmak için bu biçimlerin her ikisi ile doğrudan kodlama yaptım. JPEG çok karmaşık ve karmaşık. PNG çok basittir ve yalnızca yatay çizgilerdeki rengin değişmediği bazı resimlerde gerçekten etkilidir


1
Bunu gerçekten denedin mi? PNG yalnızca uzunluk kodlaması yapmakla kalmaz ve önerdiğinizden çok daha karmaşıktır. Uyarlanabilir bir algoritma kullanır ve hem katı alanları hem de tekrarlanan desenleri etkili bir şekilde sıkıştıracaktır.
z7sg Ѫ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.