博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Bitmap的使用小结
阅读量:4354 次
发布时间:2019-06-07

本文共 1572 字,大约阅读时间需要 5 分钟。

创建bitmap:

Bitmap bm = null; bm = Bitmap.createBitmap(w, h, Config.ALPHA_8); //每个像素占一个字节(8位) bm = Bitmap.createBitmap(w, h, Config.ARGB_4444); //两个字节 bm = Bitmap.createBitmap(w, h, Config.ARGB_8888); //四个字节 bm = BitmapFactory.decodeFile(path); //从文件加载成bitmap,如/sdcard/logo.png bm = BitmapFactory.decodeResource(getResources(), R.drawable.test); //R.drawable.test指的是/res/drawable-*/test.jpg或png等等 bm = ((BitmapDrawable)getResources().getDrawable(R.drawable.show)).getBitmap(); //未测试

截取bitmap:

Bitmap sbm = Bitmap.createBitmap(this.bm, 0, 0, w, h); //表示从(0,0)处开始截取宽为w,高为h的范围

拉伸bitmap:

DisplayMetrics dm = getResources().getDisplayMetrics();   int mScreenWidth = dm.widthPixels;  //获取屏幕宽 int mScreenHeight = dm.heightPixels;  //获取屏幕长度 Bitmap lbm = Bitmap.createScaledBitmap(this.bm, mScreenWidth, mScreenHeight, true);

每次 createBitmap ,都会分配新的内存,带来资源的消耗,所以用 Bitmap 的 createBitmap 虽然简单方便,但是不是最优方法。介绍一个比较好点的方法,不用创建新的 Bitmap ,用 Canvas 在画的时候直接缩放或者剪切。

canvas.drawBitmap(this.bm, null, new Rect(0, 0, 200, 200), null);

这里的 Rect 对象表示一个矩形区域,从 (0,0) 到 (200,200) 之间的矩形区域。这段代码将把this.bm缩放并绘制到屏幕上的 (0,0) 到 (200,200) 之间的区域。

canvas.drawBitmap(this.bm, new Rect(100, 100, 300, 300), new Rect(100, 100, 200, 200), null);

这里将this.bm的 (100,100) 到 (300,300) 区域拿出来,自动缩放并画到屏幕的 (100,100) 到 (200,200) 区域。

还可以通过matrix缩放:

Matrix matrix = new Matrix(); matrix.postScale(1.0f, 1.0f); //这里宽和高都是1倍,等于没缩放 Bitmap newbtm = Bitmap.createBitmap(btm, 0, 0, this.btm.getWidth(), this.btm.getHeight(), matrix, true);

旋转bitmap:

也是通过maxtrix实现的,详情待补。

转载于:https://www.cnblogs.com/wzc0066/archive/2013/03/07/2948173.html

你可能感兴趣的文章
[ 原创 ] Linux下查找指定类型文件以及删除
查看>>
win10环境下jdk1.8+Android Developer Tools Build: v22.3.0-887826的问题
查看>>
对于测试流程的阶段性总结
查看>>
python redis使用
查看>>
sql时间日期函数格式转换
查看>>
正则--两个匹配值相等
查看>>
跟刺猬哥一起学习设计模式【Singleton模式】
查看>>
webkit开源项目
查看>>
[BZOJ4888][TJOI2017]异或和(树状数组)
查看>>
结合自己的程序对thinkphp模板常量的理解
查看>>
2011年春季-C语言课程设计-报告格式
查看>>
PS(photoshop)里A4纸张的像素是多大?
查看>>
(转载)微软数据挖掘算法应用场景介绍
查看>>
最小的块数 (Fewest Flops,UVa 11552)
查看>>
网络UDP通讯类库
查看>>
POJ - 3162 Walking Race 树形dp 单调队列
查看>>
基础数据——功能模型
查看>>
inotify+rsync文件实时同步
查看>>
iOS7——UIControlEventTouchDown延迟响应问题
查看>>
NSCalendar--日历、日程、时间
查看>>