最近因为项目要求的图片片都比较大,平均在1m左右,由于网络的原因会造成图片下载不完全,现实的时候无法显示或者显示黑屏,项目要求加载图片的同事对图片的完整性进行校验;不完整的图片就不显示;
一、BitmapFactory.decodeFile(path)
public Bitmap mBit =null;
String path =Environment.getExternalStorageDirectory().getPath() + 图片的地址(SD中的,比如:aa/asdas.png); try { // 实例化Bitmap mBit = BitmapFactory.decodeFile(path); } catch (OutOfMemoryError e) { // } File file = new File(path); if (mBit ==null) { try { // L.e(">>>删除文件-----"); file.delete(); // 如果实例化失败 返回默认的Bitmap对象 } catch (Exception e) { L.e(">>>删除文件异常:" + e.toString()); } }else{ mBit.recycle(); mBit=null; }
if(mBit != null && !mBit.isRecycled()){ // 回收并且置为null mBit.recycle(); mBit = null; } System.gc();
二、BitmapFactory.decodeStream(is, null, opt);
String path = Environment.getExternalStorageDirectory().getPath()+ 图片的地址(SD中的,比如:aa/asdas.png);
/***/BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = true; opt.inInputShareable = true;//获取资源图片// InputStream is = context1.getResources().openRawResource(Integer.parseInt(path)); InputStream is =null; try { try { is = new FileInputStream(path); } catch (FileNotFoundException e) { e.printStackTrace(); } // 实例化Bitmap// Bitmap mBit = BitmapFactory.decodeFile(path); Bitmap mBit = BitmapFactory.decodeStream(is, null, opt); File file = new File(path); if (mBit ==null) { try {// L.e(">>>删除文件-----"); file.delete(); // 如果实例化失败 返回默认的Bitmap对象 } catch (Exception e) { L.e(">>>删除文件异常:" + e.toString()); } }else{ } // 先判断是否已经回收 if(mBit != null && !mBit.isRecycled()){ // 回收并且置为null mBit.recycle(); mBit=null; }