PNG görüntü sıkıştırma ilkesi analizi

arka fon

Bu sabah saat birde biri aniden QQ'umu ekledi ve on yıl önce sildiğim ilk aşk olduğu ortaya çıktı. . . .

Daha önce QQ alanında çok fazla etkileşim olduğu için, QQ arkadaşlarımıza genellikle birbirimizi tanımamızı tavsiye etti. . . . Utanç

Arkadaşımın başvurusunu kabul ettikten sonra, son on yıldaki tüm QQ güncellemelerine ve fotoğraflarına dikkatlice baktım.

Güzelleşti ve giyinebiliyor ... Sıska figürü, şu anki kıyafeti ve makyajıyla, zaten benim bilişimin ötesinde bir tanrıça.

Ve ben hala hiçbir şey yapmıyorum, yavaş yavaş şişkin bir vücut ve yükselen bir saç çizgisi, çok çalışıyorum ve her gün hayat boyu koşturuyorum ve hala fakirim.

Nasıl hissettiğimi tek bir cümleyle tarif etmek:

"Daha yüksek bir zirveye ulaştınız ve sadece uzaktaki sırtınıza bakabilirim."

Sessizce bir sigara yaktı ve tüm güzel fotoğraflarını sakladı.

Huh? Her fotoğrafın .png resim biçiminde olduğu görülmüştür.

png? ? Her gün png resimleri kullanıyoruz, ancak png nedir ve sıkıştırma prensibi nedir?

Çok güzel, size tek tek açıklayacağım.

PNG nedir

PNG'nin tam adı, şu anda ağ iletimi ve gösterimi için en popüler görüntü formatı olan Portable Network Graphics (Taşınabilir Ağ Grafikleri) 'dir. Sebepler aşağıdaki gibidir:

Kayıpsız sıkıştırma: PNG görüntüleri, LZ77'den türetilmiş algoritmaya göre sıkıştırılır, bu da onu daha yüksek bir sıkıştırma oranı yapar, elde edilen dosya boyutu daha küçüktür ve veri kaybı olmaz.

Küçük boyut: Tekrarlanan verileri işaretlemek için özel bir kodlama yöntemi kullanır ve aynı formattaki resmin ve PNG resim dosyasının boyutunu küçültür. Ağ iletişimlerindeki bant genişliği kısıtlamaları nedeniyle, net ve gerçekçi görüntü sağlamak amacıyla PNG formatındaki resimler tercih edilmektedir.

Saydamlık efektleri desteği: PNG, orijinal görüntü için 256 saydamlık düzeyinin tanımını destekler, böylece görüntünün kenarı herhangi bir arka planla sorunsuz bir şekilde harmanlanabilir Bu işlev GIF ve JPEG'de kullanılamaz.

PNG türü

PNG 8 / PNG 24 / PNG 32 olmak üzere üç ana PNG görüntüsü türü vardır.

PNG8: PNG 8'deki 8 aslında 8 bit anlamına gelir; bu, bir resmin renk türünü depolamak için 2 ^ 8 (2'den 8'inci kuvvete kadar) boyutu kullanmaya eşdeğerdir. 2 ^ 8, 256'ya eşittir, bu da PNG 8'in depolayabileceği anlamına gelir 256 renk vardır.Bir resim az renk içeriyorsa, onu PNG 8 olarak ayarlamak çok uygundur.

PNG24: PNG 24'teki 24, 3'ün 24'e eşit 8 ile çarpılmasına eşdeğerdir, yani, R (kırmızı), G (yeşil) ve B'yi (mavi) temsil etmek için üç 8 bit kullanılır. R (0 ~ 255), G (0 ~ 255), B (0 ~ 255), 256 kez 256 kez 256 = 16777216 tür renkli resimleri ifade edebilir, böylece PNG 24, PNG 8'den daha renkli renkleri temsil edebilir görüntü. Ancak işgal edilen alan nispeten daha büyük.

PNG32: R (kırmızı), G (yeşil), B (mavi), A (şeffaf) ile eşdeğer olan PNG 24 artı 8 bit şeffaf renk kanalına eşdeğer olan PNG 32'de 32. R (0 ~ 255), G (0 ~ 255), B (0 ~ 255), A (0 ~ 255). PNG 24'ten daha fazla bir A (saydamlık) vardır, bu da PNG 32'nin PNG 24 kadar çok rengi ifade edebileceği ve ayrıca daha zengin görüntü renk türlerini ifade edebilen 256 saydam rengi desteklediği anlamına gelir.

Nasıl söylenir, genel olarak PNG 8 / PNG 24 / PNG 32, tanrıçaları üç kategoriye ayırarak sikimizin zihnine eşdeğerdir:

Birinci türden tanrıça = PNG8: Birinci türden tanrıçayı görünce, yalayan diaosi köpekleri mutlu ve gülümseyecekler.Diaosi'nin siyah Yintang'ı yavaş yavaş genişleyerek gözlerdeki bakışın bir kalp atışı hissi olduğunu doğrular.

İkinci tip tanrıçalar = PNG24: İkinci tip tanrıçalar güçlü olmaya başlıyor ve diyoslara bir tür sıkı ve sağır edici kalp şoku verecek. İkinci tip tanrıçalarla daha fazla temas kurmak, diaosi'yi her gün dinç hale getirebilir ve ömrünü uzatabilir.

Üç tür tanrıça = PNG32: Üçüncü tür tanrıçaların önünde, tüm diller soluk ve zayıftır. Elleri ve gözleri gökyüzüne açıkken, diosların yukarı ve aşağı görmesini sağlayan bir tür üstün düzey varoluştu. Tanrılar, diğer dünyadan başka, güzelliğinin yarısını tarif etmeye yetmiyor. Bunu sadece rüyalarımda gördüm.

Hey. . . Şu anki fotoğraflarına baktığımda ilk aşkım PNG 24 seviyesine ulaşmış olmalıydı.

PNG görüntü veri yapısı

PNG görüntüsünün veri yapısı aslında http talebinin yapısına çok benzer. Aşağıdaki şekilde gösterildiği gibi birçok veri bloğunu takip eden bir veri başlığıdır:

Bir png görüntüsünü açmak için vim'in görünüm kodlama modunu kullanırsanız, aşağıdaki gibi görünecektir:

Çimleri tutmak, bu onaltılık kodun ilk bakışta tanrıçanın zihni kadar belirsiz ve anlaşılmaz mı hissediyor?

Kardeşim panik yapma, dürüst olalım, eğer kayınbiraderin gazetesinde bir sürü bozuk karakter varsa, kardeşim, bir grup eş ve cariye olurdum.

Daha sonra bu onaltılık kodların anlamını tek tek açıklayacağım.

89504e470d0a1a0a: Bu, PNG görüntüsünün başlığıdır. Tüm PNG görüntülerinin başlığı bu kod dizisidir. Görüntü yazılımı, dosyanın PNG biçiminde bir görüntü olup olmadığını belirlemek için bu kod dizisini kullanır.

0000000d: iHDR veri bloğunun uzunluğu olan 13'tür.

49484452: IHDR olan veri bloğunun türüdür ve ardından veri gelir.

000002bc: resmin genişliğidir.

000003a5: yüksekliktir.

Benzetme yoluyla, her onaltılık kod belirli bir anlamı temsil eder. Diğerlerini aşağıda tek tek analiz etmeyeceğim. Çok fazla var, hadi kendim kontrol edelim.

Ne tür bir PNG görüntüsü sıkıştırma için daha uygundur

Normal bir png görüntüsü için, tek renk ve renk değeri ne kadar küçükse, aşağıdaki resim gibi sıkıştırma oranı o kadar büyük olur:

Yalnızca kırmızı ve yeşilden oluşur.Kırmızı için 0 ve yeşil için 1 kullanılıyorsa, sayılarla temsil edilen şekil şu şekilde görünecektir:

00000000000000000

00000000000000000

00000000000000000

1111111111111111111111111

1111111111111111111111111

1111111111111111111111111

Bu resmin çok sayıda yinelenen sayı kullandığını görebiliriz. Yinelenen sayıları kaldırabilir ve bu resmi doğrudan temsil etmek için doğrudan dizi biçimini kullanabiliriz. Birini göstermek için yalnızca iki sayı kullanın PNG resmini büyük ölçüde sıkıştıran çok büyük bir resim.

ve bu yüzden! Renk ne kadar tek olursa, renk değeri o kadar az, renk farkı o kadar küçük, sıkıştırma oranı o kadar büyük ve png görüntüsünün boyutu o kadar küçük olur.

PNG sıkıştırma

PNG görüntülerinin sıkıştırılması iki aşamaya ayrılır:

Tahmin: Bu aşama, png görüntüsünü önceden işlemek ve işlendikten sonra sonraki sıkıştırma için daha uygun hale getirmektir. Açıkça söylemek gerekirse, o bir tanrıça ... Makyajı yapmadan önce, önce bir astar yapacak, önce losyon ve esans uygulayacak, sonraki makyajı, beyazlatmayı, göz farı, ışıklandırmayı vb. Kolaylaştıracak.

Sıkıştırma: Resimleri kodlamak için LZ77 algoritmasını ve Huffman algoritmasını birleştiren Deflate sıkıştırmasını gerçekleştirin.

Tahmin

Png görüntüleri, her bir pikseldeki her kanalın değerini işlemek için diferansiyel kodlama (Delta kodlaması) ile önceden işlenir. Birkaç ana diferansiyel kodlama türü vardır:

  • Filtresiz
  • X-A
  • X-B
  • X- (A + B) / 2 (ortalama olarak da bilinir)
  • Paeth çıkarımı (bu tür daha karmaşık)

Bir png resminin aşağıdaki gibi olduğunu varsayalım:

Bu resim, kademeli olarak artan kırmızıya sahip bir gradyan renk haritasıdır. Kırmızısı, soldan sağa doğru kademeli olarak artar ve değer bir diziye eşlenir. X-A diferansiyel kodlaması kullanılıyorsa, yani:

Sonuç

Nihai sonuçta çok sayıda tekrarlanan sayı vardır, bu nedenle sıkıştırma için çok uygundur.

Gradyan renkli resimlerin, renk değerlerinin fazla değişmemesi ve tek renkli resimlerin sıkıştırılmasının neden daha kolay olduğu prensibi budur.

Diferansiyel kodlamanın amacı, png görüntü veri değerlerini mümkün olduğunca tekrarlayan ve düşük değerler kümesine dönüştürmektir, böylece bu tür değerlerin sıkıştırılması daha kolay olur.

Son olarak, diferansiyel kodlamanın her bir pikseldeki her bir renk kanalının değerini, R (kırmızı), G (yeşil), B (mavi) ve A (şeffaf) işlediğine dikkat edilmelidir. Onlara ayrı ayrı davranın.

Sıkıştırma

Sıkıştırma aşaması, Huffman kodlaması ve LZ77 sıkıştırmasından oluşan ön işleme aşamasında elde edilen sonuçlar üzerinde Deflate sıkıştırması gerçekleştirecektir.

Daha önce belirtildiği gibi, Deflate sıkıştırması, resmin tüm tekrarlanan verilerini işaretleyecek ve veri özelliklerini ve yapısını kaydedecek ve en büyük sıkıştırma oranına sahip bir png resim kodlu veri elde edecektir.

Söndürme, veri akışlarını sıkıştırmak için bir algoritmadır ve akış sıkıştırmasının gerekli olduğu her yerde kullanılabilir.

Ayrıca, daha önce de söylediğimiz gibi, bir png görüntüsü birçok veri bloğundan oluşur, ancak veri bloğundaki bazı bilgiler aslında işe yaramaz.Örneğin Photoshop'ta bir png görüntüsü kaydederseniz, görüntüde bir tane olacaktır. "Bu resim photshop tarafından oluşturuldu" blok kaydı ve birçok benzer bilgi işe yaramaz. Photoshop'un "dışa aktarma web formatını" kullanırsanız, bu gereksiz bilgileri kaldırabilirsiniz. Web formatına dışa aktarmadan önceki ve sonraki karşılaştırma efekti aşağıdaki şekilde gösterilmektedir:

Web formatına dışa aktardıktan sonra, birçok gereksiz bilgiyi kaldırdıktan sonra, resmin açıkça çok daha küçük olduğu görülebilir.

Sonuç

Yukarıdakiler benim png anlayışımdır. İyi yazılmış değil, tıpkı parçalanmış orta yaşlı bir insan gibi dağınık.

O yıl ilk aşkımdan ayrılmamın sebebinin çalışmalarımı etkilemekten korktuğum olduğunu hatırlıyorum. . . Ancak ayrılıktan sonra sonuçlar hala çok kötü, sadece tanrıçayı kaçırmakla kalmadı, aynı zamanda hiçbir şey elde edemedi.

Şimdi orta yaş geldi, sırtında büyük bir ipotek var, hala evde beslenmeyi bekleyen çocuklar var, yanında horlayan uyuyan karısını izliyor, aniden araba kullanmak istiyor.

Lu Xun'un dediği gibi:

"Aşk, kumsalda deniz kabukları toplamak gibidir. En büyüğünü veya en güzelini almayın. Onları alırsanız, en sevdiklerinizi alın. En önemli şey, sevdiğiniz bir şeyi alırsanız, bir daha asla sahile gitmemenizdir."

Antivirüs yazılımı satmaktan işletim sistemleri satmaya kadar Kasperskynin 14 yıllık maaş çeki
önceki
Gree cips mi çalışıyor? Dünyanın en iyi malzemesi olarak bilinir
Sonraki
Yüksek Eş Zamanlılık Mimarisi Serisi: Dağıtılmış tutarlılığın ayrıntılı açıklaması ACID, CAP, BASE
500 günlük kullanımın ardından sorunsuz olduğu iddia edilen Huaweiin en iyi işlemcisi burada
Ali P8 Mimar Konuşması: Dağıtılmış Sistemde Küresel Benzersiz Kimliğin Tanıtımı ve Özellikleri
[Serie A] Juventus deplasmanda 2-0 Cagliari, Keane arka arkaya gol attı
Wang Jianlin'in beklemediği şey, Jack Ma'nın "yeni perakende" dönemi geldi
Cep telefonu asla kapanmayacak, üretici bir cep telefonu şarjı artefaktı geliştirdi
Juventus deplasmanda 2-0 Cagliari, Keane gol attı
Tek noktadan danışmanlık Çocuğum kötü öksürürse ne yapmalıyım? Safra kesesi taşları nasıl tedavi edilir?
Beklenen beyaz özel baskı geliyor. Arctis Pro GameDAC tushang
Google VoLTE'yi dağıtmaya başladı, ancak üç büyük yerel operatör hala geziniyor
2018'e geri bakış ping Xi Jinping'in yılı
En iyi on WeChat dolandırıcılık vakasına göz atın, geçen yıl aldanmayın!
To Top