Android Bitmap:加载与保存图像指南

需积分: 9 1 下载量 143 浏览量 更新于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等)来优化内存使用。