热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android将bitmap保存为png/jpg等

什么是bitmap?位图(Bitmap),又称栅格图(英语:Rastergraphics)或点阵图,是使用像素阵列(Pixel-arrayDot-matrix点阵)来表示的图像。只

什么是bitmap?

位图(Bitmap),又称栅格图(英语:Raster graphics)或点阵图,是使用像素阵列(Pixel-array/Dot-matrix点阵)来表示的图像。
只要知道,在安卓中,我们常用他来表示图片就可以了。

如何创建一个指定样式的bitmap?

通常,这个问题有很多种解法,常用的是Bitmap.createBitmap方法的多重重载,也可使用本人的博客:Android手写签名绘制

Android的文件操作

Android中可以在设备本身的存储设备或外接的存储设备中创建用于保存数据的文件。在默认状态下,文件是不能在不同程序间共享的,当用户卸载应用程序时,这些文件删除。
文件存储数据可以通过openFileOutput方法打开一个文件(如果这个文件不存在就自动创建这个文件),通过load方法来获取文件中的数据,通过deleteFile方法删除一个指定的文件。

将bitmap保存到本地的代码

private void savebitmap()
{
//因为xml用的是背景,所以这里也是获得背景
Bitmap bitmap=((BitmapDrawable)(imageView.getBackground())).getBitmap();
//创建文件,因为不存在2级目录,所以不用判断exist,要保存png,这里后缀就是png,要保存jpg,后缀就用jpg
File file=new File(Environment.getExternalStorageDirectory() +"/mfw.png");
try {
//文件输出流
FileOutputStream fileOutputStream=new FileOutputStream(file);
//压缩图片,如果要保存png,就用Bitmap.CompressFormat.PNG,要保存jpg就用Bitmap.CompressFormat.JPEG,质量是100%,表示不压缩
bitmap.compress(Bitmap.CompressFormat.PNG,100,fileOutputStream);
//写入,这里会卡顿,因为图片较大
fileOutputStream.flush();
//记得要关闭写入流
fileOutputStream.close();
//成功的提示,写入成功后,请在对应目录中找保存的图片
Toast.makeText(MainActivity.this,"写入成功!目录"+Environment.getExternalStorageDirectory()+"/mfw.png",Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
//失败的提示
Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
//失败的提示
Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
}
}

注意事项

  • 保存bitmap到本地是一个耗时操作,尽量不要在ui线程中操作。
  • 保存到本地后,除非重启手机/相册扫描文件,否则不会自动添加到相册中,也就是仅能通过文件夹或代码读取,找到他,可以使用广播来通知。通知代码如下:

Uri uri = Uri.fromFile(file);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));

  • 需要保存文件的权限(在AndroidManifest文件中配置)
    +
  • 保存结束后记得释放bitmap

支持我

您的支持,就是我创作的最大动力
《Android将bitmap保存为png/jpg等》 《Android将bitmap保存为png/jpg等》

完整代码下载

完整代码下载


推荐阅读
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 本文详细介绍了Python中文件的基本操作,包括打开、读取、写入和关闭文件的方法,并通过实例展示了如何将Excel文件转换为CSV文件以及进一步转换为HTML文件。此外,还涉及了成绩等级替换的具体实现。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文介绍如何使用 Python 获取文件和图片的创建、修改及拍摄日期。通过多种方法,如 PIL 库的 _getexif() 函数和 os 模块的 getmtime() 和 stat() 方法,详细讲解了这些技术的应用场景和注意事项。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 本文介绍了一种解决二元可满足性(2-SAT)问题的方法。通过具体实例,详细解释了如何构建模型、应用算法,并提供了编程实现的细节和优化建议。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 信用评分卡的Python实现与评估
    本文介绍如何使用Python构建和评估信用评分卡模型,涵盖数据预处理、模型训练及验证指标选择。附带详细代码示例和视频教程链接。 ... [详细]
author-avatar
方雅俊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有