Android保存Bitmap为本地文件
保存图片
* 图片在sd卡中,但是图库没有
* 系统每次遍历sd卡时,会把sd卡中的所有多媒体文件(图片、音频、视频)都在MediaStore数据库中保存一个索引,这个索引包含的字段有文件名、文件保存路径、标题、艺术家、持续时间
* 每次启动图库时,图库应用并不会去遍历sd卡,检测图片文件,而是直接从MediaStore数据库读取图片的索引,从而读取到这张图片
保存图片至SD卡
FileOutputStream fos = null;
try {
fos = new FileOutputStream(new File("sdcard/dazuo.png"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//保存图片
copyBm.compress(CompressFormat.PNG, 100, fos);
* 系统每次收到SD卡就绪广播时,都会去遍历sd卡的所有文件和文件夹,把遍历到的所有多媒体文件都在MediaStore数据库保存一个索引,这个索引包含多媒体文件的文件名、路径、大小
* 图库每次打开时,并不会去遍历sd卡获取图片,而是通过内容提供者从MediaStore数据库中获取图片的信息,然后读取该图片
* 系统开机或者点击加载sd卡按钮时,系统会发送sd卡就绪广播,我们也可以手动发送就绪广播
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
sendBroadcast(intent);
File file = new File(Environment.getExternalStorageDirectory(),
"aaaa.jpg");
FileOutputStream stream = null;
try {
stream = new FileOutputStream(file);
// 保存图片
copyBitmap.compress(CompressFormat.JPEG, 100, stream);
// 发送sdcard挂载的广播
Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment
.getExternalStorageDirectory()));
sendBroadcast(intent);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (stream != null) {
try {
stream.close();
stream = null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
参考:Android 图片处理
阅读更多声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。