Android載入超大圖片
Android載入超大圖片
一、目標
實現超大圖片的檢視功能。
- 《金剛經 右街僧 錄準公》26800 x 640(32.7M)
- 《金剛經 王玠》15404 x 950(27.9M)
- 《溪山清遠圖》17008 x 720 (23.4M)
二、體驗地址
神馬筆記最新版本:【
三、準備工作
1. 載入超大圖片
2018年12月17日,華為在長沙召開新品釋出會,正式釋出旗下nova系列新機華為nova 4,主打極點全面屏及4800萬超高畫素拍照體驗。
以RGB_565圖片格式計算4800萬畫素佔用記憶體大小。
2 x 48 x 1000 x 1000 / 1024 / 1024 ≈ 91.55M
如果直接載入完整的圖片,大概需要佔用91.55M記憶體空間,對於當下記憶體配置都是6G起步的手機,佔用內容不算大,但Android為每個應用分配的記憶體是有限的,一次性載入如此大的圖片,非常容易導致應用OOM崩潰。
因此必須使用載入部分割槽域的方式來載入圖片。
Android提供了BitmapRegionDecoder
來實現這個功能。
2. 獲取圖片大小
通過BitmapFactory.Options
的inJustDecodeBounds
可以不載入圖片而獲取圖片大小。
此外,還需要考慮Exif資訊,處理圖片旋轉或者翻轉屬性。
Android提供了ExifInterface
處理Exif資訊。
3. 使用者互動
- 雙擊縮放圖片
- 雙指縮放圖片
- 移動圖片
- ……
四、subsampling-scale-image-view
subsampling-scale-image-view完美解決以上所有問題。
GitHub專案地址:https://github.com/davemorrissey/subsampling-scale-image-view
WIKI幫助手冊:https://github.com/davemorrissey/subsampling-scale-image-view/wiki
五、Final
確定目標需求,到GitHub上尋找成品與半成品程式碼可以有效得提供開發效率。
待神馬筆記功能逐漸穩定後,會繼續開源相關程式碼。
訪問已開源的程式碼可以訪問 https://github.com/jicanghai37927/WhatsAndroid 。
這個專案為神馬筆記的原型專案。