大勢所趨,應用如何適配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 編碼格式。

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

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

二. HEIF圖片價值:

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

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

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

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

目標:替代 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 版本對此格式的支持也充分說明了這一點,建議各位廣大開發者趕緊適配。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM