WebP的工作原理

2021-07-14 08:38:25 字數 1206 閱讀 4948

說到網際網路的格式,jpg一直以來都是標準格式。然而在2023年,google(和一些開源貢獻者)建立了一種新的編譯碼演算法,叫做webp,它旨在同樣的的質量下比jpg壓縮得更小。

webp有多屌?一張同樣大小和複雜度的,webp可以比jpg小24%-35%。真令人震驚,因為jpg已經把檔案壓縮得差不多極致了。

為了理解webp為什麼能比jpg還要省空間,我們必須了解一下它的編譯碼原理。

這就是webp的由來:webm檔案裡單個被壓縮的幀。

或者,更精確的說webp的核心來則webm。自從2023年發布以來,webp作為乙個獨特檔案型別它也做了很多改變和公升級。例如像透明度,無損模式,和一些詭異扭曲,以及對動畫的支援。

不過我們將忽略掉所有這些花哨的東西,專注於理解有損模式的原理。

webp的有損模式是建立在與一張靜止的jpg競爭的基礎上,因此,你會注意到在對檔案處理上有一些驚人相識。

編碼器的第乙個階段是將分割成不同」巨集塊」。典型的巨集塊包括乙個16x16的亮度畫素塊,和兩個8x8的色度畫素塊。這個階段非常像jpeg格式裡轉換顏色空間,對色度通道降低取樣,以及細分。

巨集塊裡每個4x4的子塊都有乙個**模型。(又名過濾)。在png裡過濾用得非常多,它對每一行都做同樣的事,而webp過濾的是每一塊。它是這樣處理的,在乙個塊周圍定義兩組畫素:有一行在它上面為a,在它左邊那一列為l。

利用a和l,編碼器會將它們放在乙個4x4的測試畫素塊填滿,並確定哪乙個生成了最接近原始塊的值。這些用不同方法填滿的塊叫做」**塊」。

值得注意的是,4x4的亮度塊還有另外6種模式,但你現在只需知道這些就好;)

基本流程是我們找到這個快最佳的**塊,並匯出過濾結果(剩餘誤差),然後送到下個階段。

webp編碼的最後階段看起來非常像我們的老朋友jpg:

這有主要有兩點不同:

在dct階段輸入的資料不是原始的資料塊本身,而是**後的資料

webp用得靜態壓縮器是算術壓縮器,它和jpg用的霍夫曼編碼器類似。

從最後的結果看webp感覺有點像加強版的jpg。webp的**階段相比jpg是最大的優勢,它減少了特殊顏色,使得在以後的處理階段能更有效的壓縮資料。你可以自己檢視webp vs jpg文件學習,或相信許多關心準確性和圖表的聰明人,下圖是他們研究出來的對比圖表。

webp只是比jpg所有處理過程多了乙個**模式,在資料壓縮方面就把jpg幹倒,webp能夠輕鬆贏下jpg是因為這個大表哥。

如前所述,webp還有乙個無損模式…不過那就是另外一篇文章了。

webp的php擴充套件

i b 2了,imagemagick支援webp,使用imagick即可,不需編寫此擴充套件 b i url size x large 使用 size 將jpeg png 記憶體轉為webp 純記憶體操作 opts getopt f blob file get contents home lvben...

WebP 的前世今生

目前,傳統的格式如 jpeg png gif 等格式的已經沒有太多可以優化的空間,而 google 推出 webp 格式在壓縮方面有了新的突破。webp 最初發布於 2010 年,主要目標是使質量和 jpeg 格式質量相同的情況下,減少檔案的體積,籍此減少網際網路上的傳送時間和流量消耗。發布不久之後...

簡述hdfs工作原理 HDFS的工作原理

hdfs 的工作原理 hadoop 分布式檔案系統 hdfs 是一種被設計成適合執行在通用硬體上的分布式檔案系統。hdfs 是乙個高度容錯性的系統,適合部署在廉價的 機器上。它能提供高吞吐量的資料訪問,非常適合大規模資料集上的應用。要理解 hdfs 的內部工作原理,首先要理解什麼是分布式 檔案系統。...