android将应用中图片保存到系统相册并显示
2018-10-10 本文已影响4人
追梦小乐
转载于:https://www.cnblogs.com/Sharley/p/7942142.html
private static File mPhotoFile = null;
public static void setPhotoFile(File photoFile){
mPhotoFile = photoFile;
}
public static File getPhotoFile(){
return mPhotoFile;
}
/**
* 保存图片到图库
* @param bmp
*/
public static void saveImageToGallery(Bitmap bmp,String bitName ) {
// 首先保存图片
File appDir = new File(Environment.getExternalStorageDirectory(),
"yingtan");
if (!appDir.exists()) {
appDir.mkdir();
}
String fileName = bitName + ".jpg";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
setPhotoFile(file);
}
/**
* @param bmp 获取的bitmap数据
* @param picName 自定义的图片名
*/
public static void saveBmp2Gallery(Context context,Bitmap bmp, String picName) {
saveImageToGallery(bmp,picName);
String fileName = null;
//系统相册目录
String galleryPath = Environment.getExternalStorageDirectory()
+ File.separator + Environment.DIRECTORY_DCIM
+ File.separator + "Camera" + File.separator;
// 声明文件对象
File file = null;
// 声明输出流
FileOutputStream outStream = null;
try {
// 如果有目标文件,直接获得文件对象,否则创建一个以filename为名称的文件
file = new File(galleryPath, picName + ".jpg");
// 获得文件相对路径
fileName = file.toString();
// 获得输出流,如果文件中有内容,追加内容
outStream = new FileOutputStream(fileName);
if (null != outStream) {
bmp.compress(Bitmap.CompressFormat.JPEG, 90, outStream);
}
}catch (Exception e) {
e.getStackTrace();
} finally {
try {
if (outStream != null) {
outStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
MediaStore.Images.Media.insertImage(context.getContentResolver(),bmp,fileName,null);
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(file);
intent.setData(uri);
context.sendBroadcast(intent);
ToastUtils.showToast(context,"图片保存成功");
}