Android P新的图片格式 HEIF 调研
備忘,以后用到好查,轉:https://segmentfault.com/a/1190000015947004?utm_source=tag-newest
?
HEIF
HEIF是什么?
HEIF format & features?
HEIF優缺點,商業價值?
Nokia HEIF?
Android P對HEIF的支持情況?
IOS對HEIF的支持情況?
兼容性問題?
HEIF是什么?
HEIF是一個新的圖片格式
不同于jpeg的是,heif是容器和編碼分開的,編碼可以是hevc,h264,vpx等(解碼一樣),由于容器和編碼分開的設計,heif里可以放很多信息,包括多張圖片,音頻,文本等
它定義了封裝格式,編碼格式,以及圖像的展示方式,甚至涉及到與用戶如何交互
所以一套完整的 HEIF解決方案,一定是平臺相關的,不只包含了拆包封包,還包括了編解碼,展示,這些都需要與平臺的接口整合
HEIF format & features?
Format:
compatible with the ISO Base Media File Format (ISOBMFF, ISO/IEC 14496-12)
Features:
Storage of burst photos.
Support for simultaneous capture of video and still images, i.e. storing still images and timed image sequences into the same file.
Efficient representation of animations and cinemagraphs.
Storage of focal and exposure stacks into the same container file.
Storage of images derived from other images of the file, either as derived images represented by non-destructive image editing operations or as pre-computed derived images.
Support for storing other media, such as audio and timed text, into the same container file with timed image sequences and synchronizing their playback.
HEIF優缺點,商業價值?
優點:
壓縮比高,在相同的圖片質量情況下,平比 JPEG 高兩倍
能增加如圖片深度信息,透明通道等輔助圖片。(蘋果正是通過這個就能實現動態的調整圖片的景深)
支持存放多張圖片,類似相冊和集合。(實現多重曝光的效果)
支持多張圖片實現 GIF 和 livePhoto 的動畫效果
無類似 JPEG 的最大像素限制
支持縮略圖
支持透明像素
分塊加載機制
缺點:
應用不廣泛,兼容性不好,平臺應用都要支持適配,產業鏈條長
主要圖片格式對比
Nokia HEIF?
Nokia的實現只有read/writer,相當于協議的拆包封包,其他都沒有
它不是一個完整的解決方案
在Android上實現這個解決方案需要較大投入,兩種實現方式都要較大投入:
1.嵌入android框架
2.獨立SDK
Demo?
便于理解HEIF和Nokia API
實現了一個Demo,有些類型的顯示方式需要投入較大精力比如grid,overlay實現不完全但是可以展示圖片,static,sequences都是正常展示的
Demo最終實現設想?SDK方式
Android P對HEIF的支持情況?
Android P只支持靜態的顯示HEIF,無論什么類型的HEIF
對HEIF的解析是OK的,不論什么類型都可以解析出
只能封裝靜態的HEIF
由于HEIF的編解碼器以hevc,avc,aac為主所以decode和encode一般都是支持的
支持HEIF掃描
有幾個關心的問題:
HEIF的顯示,ImageDecoder/BitmapFactory + ImageView
HEIF轉Jpeg,BItmapFactory
YUV,Surface,Jpeg轉HEIF,androidx.heifwriter.HeifWriter
在這里HEIF的主要價值是高壓縮率,其他帶來的價值沒有得到體現,或者只是google試水
IOS對HEIF的支持情況?
支持靜態heif的展示,不支持sequence,其他格式都是靜態展示
從測試情況看不支持解析sequence類型
所以也不支持sequence類型的掃描
屏幕快照 2018-08-14 下午2.25.08
兼容性問題?
由于HEIF的使用還不像jpeg那么廣泛,所以在用戶使用環境中會有兼容的問題
比如我的手機支持HEIF,但是你的手機或電腦不支持,或者我想分享到朋友圈,微信不支持等等
蘋果最先實現了HEIF商業化,它的一些做法可以借鑒:
1.分享的時候比如朋友圈,email等,把HEIF轉成Jpeg
2.設備之間共享或多屏互動的時候,會查詢對方是否支持HEIF,不支持的情況下轉換成Jpeg
平臺支持,應用適配需要一個過程
HEIF轉Jpeg效率問題?
在Android P pixel XL上用bitmapfactory的方式試了下,resolution 1440x960 quality 100, 耗時在200ms左右,不同的機型CPU等效果是不一樣的這個后邊再次統計下,現在市面上Android P的手機太少
專利 專利 專利
之前介紹了heif format是跟mpeg4-12兼容的,那mpeg4parser是可以解析heif的大部分情況的
通過mpeg4 extractor或者mp4parser是不是可以避免專利方面的問題呢,暫時不清楚,可能會部分避開,但是heif定義的展示方式可能避不開,也許是google只實現了靜態展示和封裝的原因,純屬猜測。
?
Android P
上一節提到heif format是跟mpeg4-12兼容的
Android通過mediaextractor/mpeg4extractor/mediamux/mediacodec來解析解碼和編碼封裝heif
Android8.0實際上就已經有代碼加入了
?
總結
以上是生活随笔為你收集整理的Android P新的图片格式 HEIF 调研的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle缓存和Redis,说说数据缓
- 下一篇: 《设计模式》之装饰器模式