1. 程式人生 > >Android,Gilde框架載入圖片進記憶體。出現的Bitmap too large to be uploaded into a texture

Android,Gilde框架載入圖片進記憶體。出現的Bitmap too large to be uploaded into a texture

用ImageLoad載入圖片,會有的圖片load不出來,報出的警告是: Bitmap too large to be uploaded into a texture (440x5500 max=4096x4096):

經過查詢資料是因為當開啟硬體加速的時候,GPU對於openglRender 有一個限制,這個不同的手機會有不同的限制:

這個限制值可以通過canvas.getMaximumBitmapHeight()和canvas.getMaximumBitmapWidth()來獲得。
一般我們框架都有縮放圖片記憶體
Glide框架以下都測試了
例子:如果 原圖:400x4000 ,可以直接載入不過耗記憶體啊;我們縮放成200x200,這裡是按照width進行縮放。縮放成200x2000可以載入進入imageview;
例子:原圖 300X6000,不能直接載入,超過4096,這時候我們設定縮放200X200,因為BitmapFactory.Options.inSampleSize是整數行,這裡200大於300/2; 所以此時 並沒有縮放,設定其實是無效的。還是出錯。
這時候我們就需要設定 小於150 的width 縮放 。
反之 height 一樣的道理。。