android大圖片載入
A. android 中圖片太大,導致載入特別慢怎麼辦
圖片不會太大,如果載入過慢或載入不出來可能是以下問題:
手機裝的軟體過多,儲存空間不足
網速過慢
手機本身配置落後
可以嘗試長按圖片,然後保存到手機,在相冊中查看
請採納,謝謝
B. 我的安卓手機載入不了大圖片怎麼回事
若使用的是vivo手機,可查看手機載入不了圖片處理方法:
1、更換網速較好的網路重新載入試試;
2、更換一個時間段嘗試一下;
3、備份數據後進入設置--應用與許可權/更多設置--應用管理/應用程序--(全部)--中找到該軟體清理該軟體的數據和緩存;
4、更新手機系統;
5、備份數據後將軟體卸載,在應用商店裡重新搜索下載看看。
C. Android圖片載入及虛化效果
[TOC]
使用如下方式載入圖片
會導致OOM,android對於直接通過資源id載入的資源需做cache,下次再需要此資源的時候直接從cache中得到。但這樣做也造成了用過的資源都會在內存中,這樣的設計不是很適合使用了很多大圖片資源的應用,這樣累積下來應用的內存峰值是很高的。
當使用諸如
imageView.setBackgroundResource
imageView.setImageResource
BitmapFactory.decodeResource
這樣的方法來設置一張大圖片時,在完成decode後,最終都是通過java層的createBitmap來完成的,需要消耗更多內存。因此,改用先通過BitmapFactory.decodeStream方法,創建出一個bitmap,再將其設為ImageView的 source,decodeStream最大的秘密在於其直接調用JNI>>nativeDecodeAsset()來完成decode,無需再使用java層的createBitmap,從而節省了java層的空間。如果在讀取時加上圖片的Config參數,可以有效減少載入的內存,從而有效阻止拋OOM異常。
實際使用中,可以針對bitmap做如下操作
RenderScript是Google在API11中引入的類,可看作業android內置的圖片處理框架(區別於Glide等圖片處理框架,RenderScript注重於圖片的處理而不是載入)。RenderScript實際操作基於RenderScript Intrinsics,一些可以幫助RenderScript快速實現各種圖片處理的操作類。該類包含諸多操作功能,比如利用ScriptIntrinsicBlur,就可以簡單高效地實現高斯模糊效果,可通過參數radius設置虛化的程度。
1920*1080的原始圖片未經壓縮讀取時間可能會超過1s,使用該圖片作為背景圖片載入時會有明顯的卡頓。此時就需要設置BitmapFactory.Options實現對待載入圖片的壓縮。可參照 https://blog.csdn.net/u012124438/article/details/66087785 逐步優化Bitmap載入。對於載入圖片較多較頻繁的功能,建議使用第三方的圖片載入框架,如Glide或者Picasso。
需要注意的是,此處doBlur有兩個重載,可根據需要設置圖片的縮放比例.這種方式和前文通過BitmapFactory.Options設置Bitmap取樣格式的效果是一致的,都是為了減小Bitmap載入的資源消耗,提高載入效率。
D. 在android開發中載入的圖片太大,有好幾十兆,應該怎麼辦
如果圖片太大會造成OOM內存溢出的錯誤,需要用Bitmap的壓縮機制。
解決方案:
1.使用BitmapFactory.decodeStream替代createBitmap方法
原因是該方法直讀取圖片位元組,調用JNI>>nativeDecodeAsset()來完成decode,無需再使用java層的createBitmap。
2.使用壓縮讀取技術
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(imageSdUri, options);
final int height = options.outHeight;
final int width = options.outWidth;
options.inSampleSize = 1;
int w = 320;
int h = 480;
h = w*height/width;//計算出寬高等比率
int a = options.outWidth/ w;
int b = options.outHeight / h;
options.inSampleSize = Math.max(a, b);
options.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile(imageSdUri, options);
3.及時釋放Bitamp
Bitmap對象在不使用時,我們應該先調用recycle()釋放內存,然後才它設置為null.雖然recycle()從源碼上看,調用它應該能立即釋放Bitmap的主要內存,但是測試結果顯示它並沒能立即釋放內存。但是我它應該還是能大大的加速Bitmap的主要內存的釋放。
E. android 載入大量圖片速度慢是什麼原因,是訪問sd卡慢,還是使用bitmap的時候慢
android 載入大量圖片速度慢原因一般是訪問sd卡慢,SD卡讀取速度較慢造成的載入文件速度慢。
載入,漢語詞語,字面意思是增加裝載量。現多用於計算機相關領域,表示啟動程序時文件或信息的載入。
點陣圖文件(Bitmap),擴展名可以是.bmp或者.dib。點陣圖是Windows標准格式圖形文件,它將圖像定義為由點(像素)組成,每個點可以由多種色彩表示,包括2、4、8、16、24和32位色彩。例如,一幅1024×768解析度的32位真彩圖片,其所佔存儲位元組數為:1024×768×32/8=3072KB
點陣圖文件圖像效果好,但是非壓縮格式的,需要佔用較大存儲空間,不利於在網路上傳送。jpg格式則恰好彌補了點陣圖文件這個缺點。