android mediastore 保存图片
时间: 2024-07-21 17:01:13 浏览: 83
xe7android-保存图片
在Android中,你可以使用MediaStore API来保存图片。下面是一个简单的示例,展示了如何通过ContentResolver将一张图片保存到设备的照片库中:
1. 获取写入权限[^4]:
```java
// 添加读写媒体文件权限
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_EXTERNAL_STORAGE);
}
```
2. 创建一个File对象来指定图片保存的位置[^5]:
```java
Uri outputImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String fileName = "image_" + System.currentTimeMillis() + ".jpg";
File outputImageFile = getOutputMediaFile(fileName);
```
3. 使用`OutputStream`写入图片[^5]:
```java
try (OutputStream outputStream = getContentResolver().openOutputStream(outputImageUri, null)) {
// 假设bitmap是你要保存的Bitmap对象
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
```
4. 更新MediaStore记录图片信息[^5]:
```java
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.TITLE, fileName); // 图片名称
contentValues.put(MediaStore.Images.Media.DESCRIPTION, "Captured by your app"); // 描述信息
contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
contentValues.put(MediaStore.Images.Media.DATA, Uri.fromFile(outputImageFile).getPath());
getContentResolver().insert(outputImageUri, contentValues);
```
阅读全文