[英]Android loading of large bitmaps
我正在制作一個Android應用程序,需要在cavas中加載圖像(位圖)並使用“捏縮放”手勢調整其大小。 但是,當圖像超過一定大小時,應用程序將崩潰(OutOfMemory異常)。 如何優化圖像的加載和處理?
要加載我使用的圖像:
BitmapFactory.decodeResource (ctx.getResources (), R.drawable.image)
繪制:
imgCanvas.drawBitmap (image, posX, posY, null),
更改大小:
Bitmap.createScaledBitmap (originalBitmap, neww, NEWH, true);
這不是小事。
根據圖像的當前比例和圖像的當前可見部分,僅以適當的分辨率加載該圖像的一部分:
https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html
當縮小並且要顯示按比例縮小的整個圖像時,請使用此BitmapRegionDecoder
類中的方法,該方法采用BitmapFactory.Options
參數並將其inSampleSize
設置為大於1的值(最好是2的冪的值) :
https://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize
當在已經顯示在較低的分辨率,第一變焦縮放(在要用inSampleSize的值> 1)和懶惰地加載較高分辨率版本(其中inSampleSize
使用比您所使用的前一值小) BitmapRegionDecoder
和淡入高分辨率版本。
當用戶放大時,請繼續這樣做,直到inSampleSize
為1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.