1. 程式人生 > >Android Progressive JPEG 圖片由模糊到清晰

Android Progressive JPEG 圖片由模糊到清晰

我們在瀏覽網頁的時候,經常會看到一些網路圖片由模糊變的清晰的過程。在android 開發中,我們也會遇到這樣的需求。那麼這個是怎麼實現的呢?

一,背景知識:

技術標籤 關鍵字 Progressive JPEG。

相關知識點:jpeg 的儲存格式:(參考:安卓的漸進式jpeg

JPEG檔案有兩種儲存方式,分別是Baseline JPEG(標準型)和Progressive JPEG(漸進式)。兩種格式有相同尺寸以及影象資料,副檔名也是相同的,唯一的區別是二者顯示的方式不同

  • Baseline JPEG: 這種型別的JPEG檔案儲存方式是按從上到下的掃描方式,把每一行順序的儲存在JPEG檔案中。開啟這個檔案顯示它的內容時,資料將按照儲存時的順序從上到下一行一行的被顯示出來,直到所有的資料都被讀完,就完成了整張圖片的顯示。如果檔案較大或者網路下載速度較慢,那麼就會看到圖片被一行行載入的效果
  • Progressive JPEG: 檔案包含多次掃描,這些掃描順尋的儲存在JPEG檔案中。開啟檔案過程中,會先顯示整個圖片的模糊輪廓,隨著掃描次數的增加,圖片變得越來越清晰。這種格式的主要優點是在網路較慢的情況下,可以看到圖片的輪廓知道正在載入的圖片大概是什麼。在一些網站開啟較大圖片時,有時就能看到圖片由模糊再到清晰的過程。

二,如何實現

  1. facebook 開源的圖片載入引擎依舊支援。地址:https://github.com/facebook/fresco
  2.  自己支援實現:參考地址:ProgressiveJpeg介紹與在Android中的使用

          原理:將圖片檔案中標記的每一個完整影象幀(由模糊到清晰)的影象資料,直接渲染到檢視上。

    3. 針對非progressive jpeg 的圖片,也有一次decode 出圖片,然後自己做模糊的方案。但是這樣對提升使用者體驗並沒有什麼好處。