1. 程式人生 > >Android載入超大圖片

Android載入超大圖片

Android載入超大圖片

一、目標

實現超大圖片的檢視功能。

  • 《金剛經 右街僧 錄準公》26800 x 640(32.7M)
  • 《金剛經 王玠》15404 x 950(27.9M)
  • 《溪山清遠圖》17008 x 720 (23.4M)
    在這裡插入圖片描述

二、體驗地址

神馬筆記最新版本:【

神馬筆記Version1.1.0_beta.apk

三、準備工作

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.OptionsinJustDecodeBounds可以不載入圖片而獲取圖片大小。

此外,還需要考慮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

這個專案為神馬筆記的原型專案。