项目场景:
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();}