flash像素操作setPixels,setVector,copyPixels,draw性能比较
来源:互联网 发布:手机模拟电视软件 编辑:程序博客网 时间:2024/05/16 17:59
列子是转的,分析是原创的
var start:
int
= getTimer();
2
for
(var j:
int
= 0; j < 9999; j++) {
3
var arr:Vector.<
uint
> = bmd2.getVector(
new
Rectangle(10, 20, 80, 80));
4
bmd1.setVector(
new
Rectangle(10, 10, 80, 80), arr);
5
}
6
trace(
"setVector"
, getTimer() - start);
1
var
start:
int
= getTimer();
2
for
(
var
i:
int
=
0
; i <
9999
; i++) {
3
var
arr:ByteArray = bmd2.getPixels(
new
Rectangle(
10
,
20
,
80
,
80
));
4
arr.position =
0
;
5
bmd1.setPixels(
new
Rectangle(
10
,
10
,
80
,
80
), arr);
6
}
7
trace
(
"setPixels"
, getTimer() - start);
1
var
start:
int
= getTimer();
2
for
(
var
j:
int
=
0
; j <
9999
; j++) {
3
bmd1.copyPixels(bmd2,
new
Rectangle(
10
,
20
,
80
,
80
),
new
Point(
10
,
10
));
4
}
5
trace
(
"copyPixels"
, getTimer() - start);
1
var
start:
int
= getTimer();
2
for
(
var
j:
int
=
0
; j <
9999
; j++) {
3
bmd1.draw(bmd2,
new
Matrix(
0.8
,
0
,
0
,
0.8
),
null
,
null
,
new
Rectangle(
10
,
10
,
80
,
80
));
4
}
5
trace
(
"draw"
, getTimer() - start);
经过测试,执行1W次copy,setVector是800毫秒,setPixels是3973毫秒,draw870毫秒,当然最快的还是copyPixels:130毫秒
setPixels读取的速度比较慢,写的速度大家基本相同。
copyPixels>setVector>draw>setPixels
其实上面的列子 看了我下面的解释你就会知道是有BUG的 Matrix(0.8
,
0
,
0
,
0.8
), 表示对矩阵进行了缩放。具体时间大家可以还原
成Matrix(
1
,
0
,
0
,
1
),后测试
//--------------------------顺便贴两个拷贝,大家好参照着转换
01.var bmd:BitmapData = new BitmapData(tf.width, tf.height);
02.bmd.draw(tf);
03.
04.var tempRectangle:Rectangle = new Rectangle(50, 50, 135, 135);
05.var tPoint:Point = new Point(0, 0);//tPoint为在myBitmapData中的位置
06.
07.var myBitmapData:BitmapData = new BitmapData(135, 135, false, 0x000000);
08.myBitmapData.copyPixels(bmd, tempRectangle, tPoint);//在_MapData中拷贝tempRectangle区域像素并放在myBitmapData中的tPoint位置
09.
10.var bmp:Bitmap = new Bitmap(myBitmapData);
11.addChild(bmp); // bmp 的位置是在(0, 0)
----------------------------------------------------------------------
01.var tempRectangle:Rectangle = new Rectangle(39, 99, 135, 135); // 我想截取图片起点(39, 99),宽135,高135的区域
02.
03.var myBitmapData:BitmapData = new BitmapData(135, 135); // 声明宽为135高为135的bitmapdata
04.myBitmapData.draw(tf, new Matrix(1,0,0,1,-39,-99)); //将bitmapData的注册点放在截图的起点39,99
05.myBitmapData.draw(myBitmapData,null, null, null, tempRectangle); // 把要截取的图片区域画到bitmapdata中
06.
07.var bmp:Bitmap = new Bitmap(myBitmapData);
08.this.addChild(bmp);
Matrix 六个参数的最后两个tx, ty 就是Rectangle 的前两个参数x, y;
转换矩阵对象为具有如下内容的 3 x 3 的矩阵:
[ a b tx ]
c d ty
u v w
在传统的转换矩阵中,u
、v
和 w
属性具有其他功能。Matrix 类只能在二维空间中操作,因此始终假定属性值 u
和 v
为 0.0,属性值 w
为 1.0。矩阵的有效值如下:
[ a b tx ]
c d ty
0 0 1
上面的 Matrix(1,0,0,1 ) 其实对应的就是
[ 1 0 tx ]
0 1 ty
0 0 1 其实就是矩阵平移。 (不懂的可以参见Flex4+as3+API.chm)网上有下载的,或者翻阅大学数学
- flash像素操作setPixels,setVector,copyPixels,draw性能比较
- flash像素操作setPixels,setVector,copyPixels,draw性能比较
- Flash与HTML5性能比较
- html5与flash性能比较
- JavaFX/Silverlight/Javascript/Flash/Java性能比较
- RAM、ROM、Flash的分类、性能比较
- html5 和 flash的性能比较
- Bitmap setPixels
- 像素操作
- 操作像素
- 像素操作
- Unity 性能优化 Draw Call
- Unity 性能优化 Draw Call
- Unity 性能优化 Draw Call
- nity 性能优化 Draw Call
- 几种内存操作性能比较
- 几种内存操作性能比较
- flash性能
- 获得详细错误信息-windows核心编程
- 基于Chrome开源提取的界面开发框架 二(.xx)
- poj 3907 Build Your Home (多边形面积)
- openLDAP之JLDAP源码的获取
- 一个Excel导入SQL server的例子(分别使用游标、CTE、master..spt_values实现)
- flash像素操作setPixels,setVector,copyPixels,draw性能比较
- 利用VC++实现局域网实时视频传输
- 受邀请参加TEDx演讲
- 导致百度降权的6种错误举动
- 归零码和不归零码、单极性码和双极性码
- [转载][linux]在linux安装matlab,调整中文乱码的办法,不长但管用,记录下来
- linux超级终端minicom的使用方法
- 为什么软件工程师的薪水和生产力如此不成比例
- 注意: