将imageview中的图片,保存到相册以后,不管在哪里都找不到,
只有通过文件管理中的查找具体的文件,才可以找到。否则重启手机也是可以在指定位置找到的。
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(picPath))));//通知刷新
直接上代码:
private void saveImage(Bitmap bitmap){ try { String filename = System.currentTimeMillis() + ".jpg"; File outFile = new File(outDir, filename); FileOutputStream fos = new FileOutputStream(outFile); boolean flag = bitmap.compress( Bitmap.CompressFormat.JPEG, 100, fos);// 把数据写入文件 if (flag) { String picPath = outFile.getAbsolutePath(); LogUtil.i(TAG,picPath);
try { fos.flush(); fos.close();
//以下这一句是关键,否则保存了以后,不能即时刷新,所以不管哪里都找不到,除非你重启手机。 mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(picPath)))); } catch (IOException e) { LogUtil.e(TAG, e.toString()); } } else { LogUtil.i(TAG, getString(R.string.wz_pic_save_error)); } } catch (FileNotFoundException e) { throw new RuntimeException(e); } }
以上只通知保存成功的文件刷新即可。
调用:
ImageView iv;
iv.buildDrawingCache(true);
iv.buildDrawingCache();
bitmap = iv.getDrawingCache();
.... 调用,当然也可以将这代码合并到上面的方法中。
iv.setDrawingCacheEnabled(false);
下面的说明是早期版本中的说明,现在的新版本以上面为准。
1. 在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法: iv_photo.setDrawingCacheEnabled(true); 否则,无法从ImageView对象iv_photo中获取图像; 2. 在调用getDrawingCache()方法从ImageView对象获取图像之后,一定要调用setDrawingCacheEnabled(false)方法: iv_photo.setDrawingCacheEnabled(false); 以清空画图缓冲区,否则,下一次从ImageView对象iv_photo中获取的图像,还是原来的图像。