今天主要说的是把图片保存到本地相册,
一、主要思路:
将一张图片,无论是本地图片还是网络图片先转成Bitmap格式,再调用方法保存到相册中
二、开发过程中可能会遇到的问题:
1:保存成功了,但图库不显示
原因:没刷新图库
解决:写一个广播,通知刷新图库
2:保存失败或者抛异常
原因:可能要写入的文件夹不存在
解决:如果不存在,一定要先创建文件夹再写入
三、实现方案:
/**
* 保存图片到本地
*
* @param name 图片的名字,比如传入“123”,最终保存的图片为“123.jpg”
* @param bitmap 本地图片或者网络图片转成的Bitmap格式的文件
* @return
*/
public void saveImage(String name, Bitmap bitmap) {
File pathFile = new File(Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_PICTURES + File.separator);
if (!pathFile.exists()) {
pathFile.mkdir();
}
File file = new File(pathFile, name + ".jpg");
try {
FileOutputStream fos = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
// 最后通知图库更新
ToastsUtils.centerToast(this, "保存成功");
Uri localUri = Uri.fromFile(file);
Intent localIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, localUri);
sendBroadcast(localIntent);
} catch (IOException e) {
e.printStackTrace();
}
}