当前位置: 首页 > 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,可能用于后续操作}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • FreeSWITCH event_socket 配置从其他地址连接
  • 使用CUBE_MX使用I2C通信,实现对EEPROM的读写
  • AI与自然语言处理(NLP):中秋诗词生成
  • OpenAI o1模型推理能力大幅提升的背后:重复采样如何提升AI推理能力
  • Clickhouse使用笔记
  • 了解 React 应用程序中的渲染和重新渲染:它们如何工作以及如何优化它们
  • 『功能项目』战士职业平A怪物掉血【44】
  • 动态规划---不同的子序列
  • 一次RPC调用过程是怎么样的?
  • NLP与文本生成:使用GPT模型构建自动写作系统
  • 软件无线电2:矢量信号器和HackRF实现FM调制解调
  • 32.递归、搜索、回溯之floodfill算法
  • com.microsoft.sqlserver:sqljdbc4:jar:4.0 was not found产生原因及解决步骤
  • Zabbix的安装与基本使用(主机群组、应用集、监控项、触发器、动作、媒介)
  • C++设计模式(更新中)
  • [NodeJS] 关于Buffer
  • 10个最佳ES6特性 ES7与ES8的特性
  • CSS盒模型深入
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • FineReport中如何实现自动滚屏效果
  • npx命令介绍
  • python大佬养成计划----difflib模块
  • Python十分钟制作属于你自己的个性logo
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • windows-nginx-https-本地配置
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 构造函数(constructor)与原型链(prototype)关系
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 十年未变!安全,谁之责?(下)
  • 数据结构java版之冒泡排序及优化
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 网页视频流m3u8/ts视频下载
  • 转载:[译] 内容加速黑科技趣谈
  • FaaS 的简单实践
  • 树莓派用上kodexplorer也能玩成私有网盘
  • # wps必须要登录激活才能使用吗?
  • # 透过事物看本质的能力怎么培养?
  • #pragma pack(1)
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • ()、[]、{}、(())、[[]]命令替换
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (过滤器)Filter和(监听器)listener
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)Linux+Windows下安装ffmpeg
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)大道至简,职场上做人做事做管理
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑