项目场景:
Android开发:图片过大导致bitmap的内存溢出问题
问题描述
出现Canvas: trying to draw too large(151727408bytes) bitmap.错误
try {
URL url = new URL(item.get("item_image").toString());
// 获得连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(6000);//设置超时
conn.setReadTimeout(6000);
conn.setUseCaches(false);//不缓存
conn.connect();
InputStream is = conn.getInputStream();//获得图片的数据流
Bitmap bitmap = BitmapFactory.decodeStream(is);
is.close();
holder.image.setImageBitmap(bitmap);
} catch (Exception e) {
System.out.println("异常为:");
e.printStackTrace();
}
解决方案:
加入options来缩小图片
try {
URL url = new URL(item.get("item_image").toString());
// 获得连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(6000);//设置超时
conn.setReadTimeout(6000);
conn.setUseCaches(false);//不缓存
conn.connect();
InputStream is = conn.getInputStream();//获得图片的数据流
BitmapFactory.Options options=new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 10;
Bitmap bitmap = BitmapFactory.decodeStream(is,null,options);
is.close();
holder.image.setImageBitmap(bitmap);
} catch (Exception e) {
System.out.println("异常为:");
e.printStackTrace();
}