今天做我們的智能相冊的項目時,遇到了非常神奇的問題,當照片太大時,導致ImageView.setImageBitmap不顯示,上網上搜了很多辦法,感覺都不是那麼靠譜,最後使用了簡單粗暴的手段:
//Bitmap too large to be uploaded into a texture
Bitmap bm = BitmapFactory.decodeFile(imagePath);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth=dm.widthPixels;
if(bm.getWidth()<=screenWidth){
imageView.setImageBitmap(bm);
}else{
Bitmap bmp=Bitmap.createScaledBitmap(bm, screenWidth, bm.getHeight()*screenWidth/bm.getWidth(), true);
imageView.setImageBitmap(bmp);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
主要的思路就是把通過文件路徑imagePath得到的圖片Bitmap做Scale處理,但是如果Bitmap其實沒有那麼大就不作處理,這裏我判斷Bitmap的寬比屏幕小時,就沒有必要做處理了。