当前位置: 首页 > news >正文

Android 11(API 级别 30)及以上版本中,将Bitmap保存到设备上

调用

saveBitmapToMediaStore(getContentResolver(),bitmap,“图片名”,mimeType);

参数解析:
Bitmap myBitmap = ...; // 这里应该是你获取或创建Bitmap的代码  
private String mimeType = "image/jpeg"; // 或者"image/png",取决于你的Bitmap格式
ContentResolver contentResolver = getContentResolver();  // 如果你在Activity或Fragment中,可以直接调用getContentResolver()  
  • contentResolver:
    是Android提供的一个用于访问系统级内容提供者(Content Providers)的接口。它允许你查询和修改由内容提供者管理的数据。在保存图片到MediaStore时,你需要通过ContentResolver来与MediaStore进行交互。
  • Bitmap bitmap:
    Bitmap是Android中用于表示位图图像的一个类。在这个函数中,bitmap参数代表了你想要保存到设备上的图片。
  • String displayName:
    displayName是图片的显示名称,即在文件系统中看到的文件名(不包括文件扩展名)。这个名称将用于MediaStore中的记录,并且(在某些情况下)也用作实际保存的文件名。
  • String mimeType:
    mimeType是多用途互联网邮件扩展类型(MIME Type)的字符串表示,它描述了数据的格式和类型。对于图片,常见的MIME类型包括"image/jpeg"(JPEG格式)和"image/png"(PNG格式)。这个参数告诉MediaStore你的图片是什么类型的,以便它能够正确地处理和索引它。
方法:
        public Uri saveBitmapToMediaStore(ContentResolver contentResolver, Bitmap bitmap, String displayName, String mimeType) {// 确保文件名和MIME类型不为空if (displayName == null || mimeType == null) {throw new IllegalArgumentException("DisplayName and MimeType cannot be null");}//指定储存的路径String relativePath= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath()+ File.separator+ "Cs";File file=new File(relativePath);if (!file.exists()) {file.mkdirs();}// 创建ContentValues来保存图片的信息ContentValues values = new ContentValues();values.put(MediaStore.Images.Media.DISPLAY_NAME, displayName);values.put(MediaStore.Images.Media.MIME_TYPE, mimeType);values.put(MediaStore.Images.Media.RELATIVE_PATH, relativePath); // API 29+// 对于Android 10及以上版本,通常不需要指定相对路径// 但如果你需要,可以考虑使用MediaStore.Images.Media.RELATIVE_PATH(需要API 29+)// 使用MediaStore的URI来插入图片信息Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;// 插入图片信息到MediaStore,并获取返回的UriUri resultUri = null;try {resultUri = contentResolver.insert(uri, values);if (resultUri != null) {// 使用返回的Uri来获取OutputStream,并写入Bitmaptry (OutputStream out = contentResolver.openOutputStream(resultUri)) {bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); // 或者使用PNG等其他格式}}} catch (Exception e) {e.printStackTrace();// 处理异常,例如通知用户保存失败}return resultUri; // 返回图片的Uri,可能用于后续操作}
http://www.lryc.cn/news/440134.html

相关文章:

  • django orm增删改查操作
  • 禁忌搜索算法(TS算法)求解实例---旅行商问题 (TSP)
  • Rust 所有权 简介
  • linux-网络管理-防火墙配置
  • 【springboot】实现文件上传和下载
  • 【RabbitMQ】RabbitMQ如何保证数据的可靠性,RabbitMQ如何保证数据不丢失,数据存储
  • Redis 篇-初步了解 Redis 持久化、Redis 主从集群、Redis 哨兵集群、Redis 分片集群
  • 算法基础-二分查找
  • LeetCode:1184. 公交站间的距离 一次遍历数组,复杂度O(n)
  • 牛客周赛 Round 60(A,B,C,D,E,F)
  • vueCropper裁剪图片(不模糊)以及记录使用方法
  • 【HTML】HTML页面和常见标签
  • 鸿蒙 ArkUI组件二
  • PHP 实现 redis 分布式锁
  • vue3 自定义el-tree树形结构样式
  • 【网络安全】分享4个高危业务逻辑漏洞
  • 【装机教程】Visual Studio Community 2019离线安装
  • NumPy 线性代数
  • 家装材料之水泥,最容易被忽视的基础材料!
  • openstack之keystone介绍
  • 【图像拼接】基于SIFT/SURF特征算法的图像拼接,matlab实现
  • 《微信小程序实战(2) · 组件封装》
  • LaTex2024 下载安装运行HelloWorld—全流程笔记
  • Golang | Leetcode Golang题解之第404题左叶子之和
  • 基于yolov8+lprnet的中文车牌识别系统python源码+pytorch模型+精美GUI界面
  • 电信创维光猫DT741超级密码
  • PostgreSQL的流复制断点续传
  • 【bug】通过lora方式微调sdxl inpainting踩坑
  • [Python可视化]数据可视化在医疗领域应用:提高诊断准确性和治疗效果
  • css <样式一>