大勢所趨,應用如何適配Android P HEIF圖片格式

谷歌公佈,Android P 版本支持HEIF格式圖片。HEIF 全稱爲 High Efficiency Image Format,即高效率圖片格式。相比於 JPEG 等目前互聯網通用的圖片格式,HEIF 圖片有何價值?在HEIF圖片的適配過程當中,應用會遭遇哪些典型性問題?該如何進行適配?網絡

一. 什麼是HEIF圖片

1.HEIF(High Efficiency Image Format),即高效率圖片格式。2015年由 ISO 批准發佈,由 MPEG 標準組織制定,採用 HEVC 編碼格式。ide

2.蘋果自2017.9.20發佈的 iOS11 開始拍照保存支持HEIF格式(iPhone 7及以上機型)。編碼

3.谷歌 O 版本 MR1 支持 HEIF 靜態圖的軟件解碼,Android P 支持 HEIF 軟件解碼、軟件編碼。spa

二. HEIF圖片價值:

1.與 JPEG 同等圖片質量的壓縮率是 JPEG 的2.39倍,可節省約50%空間,節省網絡傳輸流量。日誌

2.支持存儲多張圖片(圖片集合、序列圖等,如連拍)。code

3.支持動態圖片(相似 Gif 動圖)。orm

4.支持圖片深度信息、透明度信息。blog

目標:替代 JPEG,成爲主流圖片類型接口

三. 適配HEIF圖片格式典型問題

1.在支持 HEIF 編解碼的手機沒法打開HEIF格式文件。圖片

2.儘管手機支持 HEIF 編解碼,應用仍沒法掃描到用戶手機本地的HEIF格式圖片,沒法分享或者發送本地 HEIF 格式圖片給其餘用戶。

3.將 HEIF 格式圖片,經過支持 HEIF 編解碼的手機發送到不支持 HEIF 編解碼的手機,會出現圖片沒法查看的問題。

四. 適配指導

1.判斷手機是否支持 HEIF 格式

谷歌未提供統一接口,推薦應用經過手機系統版原本判斷是否支持 HEIF 格式編解碼。目前,Android O 版本 MR1 支持 HEIF 靜態圖的軟件解碼,Android P 支持 HEIF 軟件解碼、軟件編碼。

以華爲 Android P 版本手機 HEIF 格式編解碼爲例,參考實現代碼請關注「安卓綠色聯盟」公衆號閱讀歷史文章查看。

2.如何讀取和顯示HEIF圖片文件

①經過 Android P 版本新增的類 ImageDecoder 加載圖片。

參考實現代碼請關注「安卓綠色聯盟」公衆號閱讀歷史文章查看。

顯示效果:

②經過歷史版本已有類 BitmapFactory 加載圖片。

該方法工做量最小,只需放開 Android P 版本手機 HEIF 圖片文件加載,無需修改圖片加載代碼。須要注意的是,應用需默認支持 HEIF 圖片的加載查看。

參考實現代碼請關注「安卓綠色聯盟」公衆號閱讀歷史文章查看。

顯示效果:

3.圖片掃描推薦方式

方式一(推薦):經過 ContentProvider 掃描

實現本地圖片的上傳、分享或者是發送功能,須要掃描手機本地的圖片。若是應用經過自身掃描的方式,需根據手機版本判斷手機支持的圖片編解碼格式,因此推薦使用 ContentProvider 掃描手機中的圖片。經過這種方法掃描,系統會將支持的全部解碼格式的圖片文件返回給應用,不須要應用自身再去作格式判斷。

參考實現代碼請關注「安卓綠色聯盟」公衆號閱讀歷史文章查看。

經過抓取日誌,可以看到應用若是在支持 HEIF 編解碼的手機執行,系統會將HEIF格式圖片掃描結果返回給應用,若是在不支持 HEIF 格式的手機執行,系統則不會將 HEIF 格式圖片掃描結果返回。

支持 HEIF 格式的手機執行抓取的日誌請關注「安卓綠色聯盟」公衆號閱讀歷史文章查看。

方式二(不推薦):應用自身進行掃描

應用經過自身掃描,判斷哪些是可支持的圖片文件,須要增長對 HEIF 格式的判斷, HEIF 格式文件的後綴有兩種:.heif和.heic

4.HEIF 格式轉 JPEG

使用場景:

HEIF 格式轉成 JPEG 格式主要考慮向下兼容的問題。經過支持 HEIF 格式的手機向不支持此格式的手機發送 HEIF 圖片,若是直接發送原始 HEIF 格式,會出現圖片沒法使用的狀況。所以,爲了不這種狀況,能夠考慮在發送以前將 HEIF 格式圖片轉換成 JPEG 格式再發送。應用能夠選擇使用谷歌原生的接口來進行轉換。

參考實現代碼請關注「安卓綠色聯盟」公衆號閱讀歷史文章查看。

HEIF 圖片格式的諸多優點使它具備很好的市場前景,此次谷歌 Android P 版本對此格式的支持也充分說明了這一點,建議各位廣大開發者趕忙適配。

相關文章
相關標籤/搜索