Android Bitmap:加载与保存图像指南
需积分: 9 71 浏览量
更新于2024-09-14
收藏 58KB DOC 举报
"Android bitmap 相关内容涉及到Bitmap的创建、加载和本地保存,以及从网络获取Bitmap的方法。"
在Android开发中,Bitmap是用于表示图像数据的重要类,它不支持直接创建,而是需要通过BitmapFactory进行解码来获取。BitmapFactory提供了解析不同来源图像数据的功能,包括从资源文件、本地文件系统以及网络流中加载Bitmap。
1. 从资源文件加载Bitmap
当图像来源于项目的资源文件,如`R.drawable.tianjin`,可以使用`decodeResource()`方法加载Bitmap:
```java
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.tianjin);
```
这里,`getResources()`用于获取当前上下文的资源对象,`R.drawable.tianjin`是资源ID。
2. 从本地文件加载Bitmap
如果图像位于设备的文件系统中,例如 `/sdcard/dcim/tianjin.jpeg`,可以使用`decodeFile()`方法:
```java
Bitmap bmp = BitmapFactory.decodeFile("/sdcard/dcim/tianjin.jpeg");
```
3. 保存Bitmap到本地
要将Bitmap保存到本地,首先创建一个File对象表示目标文件路径,然后使用`compress()`方法将Bitmap压缩为JPEG或PNG格式写入到OutputStream中:
```java
File fImage = new File("/sdcard/dcim", "beijing.jpeg");
FileOutputStream iStream = new FileOutputStream(fImage);
Bitmap oriBmp = ...; // 原始Bitmap
oriBmp.compress(CompressFormat.JPEG, 100, iStream);
```
`CompressFormat.JPEG`表示压缩格式,100是质量参数,值越高质量越好,但文件也越大。
4. 从网络加载Bitmap
获取网络上的图片,首先需要构建URL,打开连接,然后通过InputStream读取网络数据,最后使用`decodeStream()`方法解码:
```java
String iconURI = "http://202.140.96.134:8080/FS-RSS/img/RN.png";
URL imgURL = new URL(iconURI);
URLConnection conn = imgURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap bmp = BitmapFactory.decodeStream(bis);
```
在实际应用中,为了优化性能和避免内存问题,通常会使用异步加载和缓存策略,例如Picasso、Glide等库。
理解并熟练运用Bitmap的加载、保存和处理方法对于Android开发者来说至关重要,因为处理图像数据是许多应用程序的核心功能。同时,需要注意的是,由于Bitmap占用大量内存,因此在处理时要特别注意内存管理,避免导致内存泄漏或Out of Memory (OOM) 错误。可以通过调整Bitmap的配置(如SampleSize、InMemoryCache等)来优化内存使用。
2016-11-03 上传
2018-08-01 上传
2010-12-23 上传
2012-11-10 上传
2012-03-01 上传
2011-05-16 上传
2013-02-25 上传
2013-05-04 上传
ibwin
- 粉丝: 0
- 资源: 3
最新资源
- 近探拓客软件-实现日更新的全国工商数据采集的工具-工商数据采集工具免费下载V21.4.1
- telescope_hoogle:望远镜的Hoogle搜索集成
- passwordGenerator:此分配使用math.random为用户生成密码
- dotnet C# 根据椭圆长度和宽度和旋转角计算出椭圆中心点的方法.rar
- ProjectManager:.NET Core中的简单项目管理
- Muzisung_FE:这是无知项目前端的存储库。
- Mysis_DVM_Modeling:我的高级论文项目“为 Diluviana 的 Diel 垂直迁移模式建模”的代码和头脑风暴。
- torch_spline_conv-1.2.1-cp36-cp36m-linux_x86_64whl.zip
- CMTraerPhysics:Traer v3.0物理引擎的Objective-CCocoa端口; 与iOS演示应用程序
- bilingual-pdf:由英文PDF生成双语PDF,回归原生加速长篇英文阅读!
- js-demo:关于本人博客中关于js的使用的代码示例
- 清水混凝土模板支撑施工方案.zip
- 来自“菜鸟教程”JavaScript实例练习【二】web.zip
- 仿天猫静态页面 登陆/注册/首页/天猫超市页/购物车/手机列表页 Tmall.zip
- 淘特新闻管理系统 v4.0.4
- Class-33