Android Bitmap操作详解:转换、压缩与保存
需积分: 47 166 浏览量
更新于2024-09-21
3
收藏 48KB DOC 举报
"这篇资源是关于Android平台中Bitmap对象的使用方法总结,涵盖了从Drawable转换为Bitmap、从资源加载Bitmap、Bitmap与byte数组之间的转换、保存Bitmap到文件、按需缩放Bitmap以及处理ImageView中图片的scaleType等知识点。"
在Android开发中,Bitmap对象用于表示图像数据,它的操作广泛应用于图像加载、处理和显示。以下是关于Android Bitmap用法的详细说明:
1. Drawable转Bitmap:这个方法将一个Drawable对象转换为Bitmap,常用于将设置到ImageView中的Drawable转换为Bitmap进行进一步处理。代码中创建了一个对应尺寸的Bitmap,并使用Canvas将Drawable绘制到Bitmap上。
2. 从资源获取Bitmap:通过BitmapFactory.decodeResource()方法,可以从项目的资源文件中加载Bitmap。这个方法接受Resources对象和资源ID作为参数,返回对应的Bitmap。
3. Bitmap转byte[]:这个函数将Bitmap对象压缩为PNG格式的byte数组,常用于网络传输或者存储。使用Bitmap的compress()方法将Bitmap压缩,然后通过ByteArrayOutputStream写入到字节数组。
4. byte[]转Bitmap:将byte数组解码为Bitmap对象,使用BitmapFactory的decodeByteArray()方法。如果输入的byte数组长度为0,函数会返回null。
5. 保存Bitmap到文件:该静态方法将Bitmap以JPEG格式保存到指定路径。使用Bitmap的compress()方法压缩Bitmap,然后写入到FileOutputStream中。
6. 按需缩放Bitmap:根据给定的新宽度和高度,计算缩放比例,然后使用Matrix对象的postScale()方法调整Bitmap的尺寸。最后通过Bitmap.createBitmap()创建新的缩放后的Bitmap。
7. BitmapFactory.Options设置:通过设置inSampleSize属性,可以控制Bitmap解码时的采样率,减少内存占用,防止因图片过大导致的OOM异常。例如,设置inSampleSize为2,将图片大小变为原来的1/4。
8. ImageView的android:scaleType:这是一个重要的属性,控制了图片如何适应ImageView的大小。常见的几种模式有:
- CENTER:居中显示,不考虑比例。
- CENTER_CROP:保持比例扩大图片以填充ImageView,部分可能会超出边界。
- CENTER_INSIDE:保持比例缩放图片,使其完全位于ImageView内。
- FIT_CENTER/FIT_START/FIT_END:按比例缩放至宽度匹配,分别居中、左对齐、右对齐。
- FIT_XY:不保持比例缩放以填充整个ImageView。
- MATRIX:使用自定义的Matrix进行缩放。
9. Bitmap缩放:通过Matrix对象实现Bitmap的放大或缩小。设置好缩放比例后,使用Bitmap.createBitmap()方法创建新的Bitmap。
10. Drawable转Bitmap:这是另一种将Drawable转换为Bitmap的方法,创建对应尺寸的Bitmap并使用Canvas进行绘制。
11. 获取圆角Bitmap:通过创建一个带圆角的Bitmap,可以用来实现圆形或带有圆角的ImageView效果。这通常涉及到Bitmap的裁剪和重绘。
这些知识点对于Android应用开发中的图像处理非常关键,理解和掌握这些方法能帮助开发者更高效地处理图片,优化应用性能。
235 浏览量
102 浏览量
2010-12-23 上传
2023-05-10 上传
2023-04-27 上传
2023-05-12 上传
2023-09-11 上传
2023-07-22 上传
2023-06-08 上传
Gphone520
- 粉丝: 1
- 资源: 7
最新资源
- 智力考验看成语猜古诗句小程序源码
- ExceptionCode.rar_Linux/Unix编程_Unix_Linux_
- 千图网图标采集源码-易语言
- peak:练习应用程式检视
- Scratch少儿编程项目音效音乐素材-【铃声】音效-午夜微博里小女孩笑声2个mp3.zip
- rssi:802.11 rssi
- 多路输出直流稳压电源设计_稳压_multisim_开关电源_电源_直流稳压_
- CPSC544:CPSC544存储库
- 基于CSS3实现的轮船和飞机动画特效源码.zip
- 06一个比较规范的VFP主程序,适合初学者参考.rar
- 基于openresty邮箱网关
- windows socket网络编程之iocp完成端口模型的例子
- libvlc-qt_0.8.1_src.tar.gz_Linux/Unix编程_C/C++_
- If_C++_
- Scratch少儿编程项目音效音乐素材-【日常生活】音效-敲门.zip
- python_intro_ga:Python简介,大会