mozjpeg:Mozilla的一個有關影象壓縮的新專案

kmokidd發表於2014-03-22

今天我準備向大家介紹Mozilla的一個新專案:mozjpeg。在目前相容各個JPEG編碼器的情況下,這個專案以期提供產品級的JPEG格式解碼器來提高壓縮率。

我們為什麼要做這個專案呢?

1992年左右,JPEG格式就作為有失真壓縮的圖片格式在Web世界裡流行起來了,它的主流地位持續了很長時間。可以說Web上絕大部分照片都是以JPEG格式存在。作為有失真壓縮的圖片格式化,只有JPEG能在各個瀏覽器甚至所有的軟體上正常工作。

這些年來,各個網站上的圖片的數量和大小都增長了很多。相對的,HTML、JS和CSS檔案大小都減小了。這說明在頁面載入的過程裡,圖片佔用了大量的網路流量。所以減小圖片的大小能夠有效地實現頁面優化。

在壓縮效率方面,JPEG編碼器經歷了一段時間的停滯不前,用別的方式來替代JPEG也一度成為了熱門話題。但是使用新的圖片格式以後,還要在相容性上再花費好幾年時間,所以JPEG的棄用論的熱度也漸漸冷卻。在Mozilla,我們從不懷疑在演算法層面上的改進是有作用的。即使在目前的過渡期,JPEG仍然會被廣泛地使用。

經過了20多年,現在JPEG編碼器不知道是不是真的到達了壓縮極限。在經過和多為工程師的討論後,我們認為即使在很高的相容性要求下,JPEG仍然可以進一步壓縮。我們掌握了一些可靠的方式來進行進一步探索,於是mozjpeg專案就開始了。

在現在的1.0釋出版新增了“jpgcrush”功能的libjpeg-turbo的分支。我們注意到用perl指令碼寫的“jpgcrush”能夠有效減小JPEG檔案大小,你可以在許許多多網上論壇上搜尋到關於“jpgcrush”的資訊。它在無損的基礎上有效減小了檔案大小,特別是在PNG轉為JPEG時,用IJG libjpeg可以達到2%-6%的壓縮比;維基媒體上獲取的1500個JPEG檔案樣本平均達到了10%的壓縮率。達到這樣的效果是通過在編碼過程裡尋找使用到的最少位數。就我們所知,目前為止還沒有任何產品用到了這項技術,所以我們把它作為mozjpeg的第一個特性。

我們下一個目標是利用柵格量化來提高編碼質量。可以通過下面的方式為這個專案提供幫助或者瞭解更多資訊:

相關文章