`

[转]flash像素操作setPixels,setVector,copyPixels,draw性能比较

阅读更多
http://www.cnblogs.com/heycup/archive/2011/01/24/1943012.html

看到有同学比较as3像素copy的效率的文章,得出的结论是:
copyPixels>setPixels>setVector
让我感到非常不理解的是新api setvector为何远远落后于其他两个呢,从原则上,setvector应该比setpixels快,今天碰巧做了测试,发现和上面的测试结果不太一样

var start:int = getTimer();

            for (var j:int = 0; j < 9999; j++) {

                var arr:Vector.<uint> = bmd2.getVector(new Rectangle(10, 20, 80, 80));

                bmd1.setVector(new Rectangle(10, 10, 80, 80), arr);            

            }

            trace("setVector", getTimer() - start);
 

var start:int = getTimer();

            for (var i:int = 0 ; i < 9999; i++) {

                var arr:ByteArray = bmd2.getPixels(new Rectangle(10, 20, 80, 80));

                arr.position = 0;

                bmd1.setPixels(new Rectangle(10, 10, 80, 80), arr);            

            }

            trace("setPixels", getTimer() - start);
view sourceprint?

var start:int = getTimer();

            for (var j:int = 0; j < 9999; j++) {

                bmd1.copyPixels(bmd2, new Rectangle(10, 20, 80, 80), new Point(10, 10));

            }

            trace("copyPixels", getTimer() - start);
 

var start:int = getTimer();

            for (var j:int = 0; j < 9999; j++) {

                bmd1.draw(bmd2,new Matrix(0.8,0,0,0.8),null,null,new Rectangle(10, 10,80,80));

            }

            trace("draw", getTimer() - start);

经过测试,执行1W次copy,setVector是800毫秒,setPixels是3973毫秒,draw870毫秒,当然最快的还是copyPixels:130毫秒
setPixels读取的速度比较慢,写的速度大家基本相同。
copyPixels>setVector>draw>setPixels
这样的结果才合理,看来文章不能简单看看,动手才更有意义。
原创文章版权所有:heycup@gmail.com,欢迎转载,请注明出处
分享到:
评论

相关推荐

    flash 视频运动检测

    在Flash中,可以使用BitmapData对象的getPixels()和setPixels()方法获取和修改像素数据,然后比较两帧的差异。 四、光流法 光流法更复杂,它考虑了像素在空间上的连续性和时间上的连续性,通过求解像素的二维速度场...

    FLASH 经典碰撞 类似屏保

    二是基于像素级别的碰撞检测,如使用`getPixels()`和`setPixels()`方法逐像素比较两个对象的透明度。具体到“qipao.fla”,我们可以假设它可能包含了自定义的碰撞检测算法,以提供更加精确和有趣的碰撞效果。 总的...

    图片转RGBA4444

    例如,可以使用`Texture2D.GetPixels()`获取原始像素数据,然后使用`Color.rgbaToBytes()`方法将颜色数据转换为指定格式的字节数组,最后用`Texture2D.SetPixels()`和`Texture2D.Apply()`更新并保存新的纹理。...

    unity3d BitmapToTexture2D

    Bitmap是一种常见的图像格式,广泛应用于Windows操作系统和许多图像处理软件中。然而,Unity3D使用的是自己的纹理类型Texture2D,它是Unity内核支持的一种纹理类。因此,我们需要了解如何通过C#脚本来实现这种转换。...

    图片转换切碎

    **CopyPixels**: 这是图像处理中的一种常见操作,用于在内存中复制像素数据。在Java或Android开发中,Bitmap类提供了`copyPixelsToBuffer()`和`copyPixelsFromBuffer()`方法,用于从一个Bitmap对象复制像素到缓冲区...

    ActionScript 3 BitmapData 的例子

    BitmapData提供了一些方法来读取和修改单个像素,如`getPixel()`和`setPixel()`,以及更高效地处理多像素的`getPixels()`和`setPixels()`。例如: ```actionscript var pixelColor:uint = bitmapData.getPixel(10, ...

    android对图像的操作

    在Android平台上,对图像进行操作是一项常见的任务,涵盖了多种功能,如图像的保存、翻转、缩放以及调整透明度等。以下是对这些知识点的详细解释: 1. **Bitmap合成**: Android提供了`Bitmap`类来处理图像,可以...

    BitmapPixels示例中AGRB_8888疑问

    通常,这类文件会包含如何获取和操作Bitmap的像素信息,例如遍历像素、修改像素颜色、进行像素转换等操作。可能的示例代码如下: ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R....

    android 图片模糊效果

    综上所述,实现Android图片模糊效果需要理解像素操作、掌握模糊算法,并进行性能优化。`BlurEffectForAndroidDesign-master`项目提供了一个自定义模糊效果的示例,开发者可以通过学习该项目的源代码,了解和掌握如何...

    Android应用源码之安卓图片旋转放大缩写透明度调整例子.zip

    在Android开发中,图片的处理是一项常见的任务,包括图片的旋转、放大缩小以及调整透明度等操作。这个压缩包中的源码提供了一个很好的实例,帮助开发者深入理解如何在Android平台上实现这些功能。以下是对这些功能的...

    Android图像处理

    在Android中,我们可以使用Bitmap的getPixels()方法将Bitmap转换为像素数组,然后逐个修改像素值,再通过setPixels()方法将修改后的像素设置回Bitmap。这种方法虽然效率较低,但可以实现高度自定义的图像变换,如...

    android生成8级灰度图像

    使用`getPixels()`和`setPixels()`方法在Java层或JNI层操作Bitmap的像素数据。遍历所有像素,将RGB值转换为灰度值,并更新像素。 5. 更新视图: 将转换后的灰度Bitmap设置到ImageView或其他显示组件中,更新用户...

    android 截图demo

    这样可以避免Java层的性能瓶颈,尤其在处理大量像素数据时效果显著。 在“gsnap”这个文件中,很可能是包含了一个使用JNI实现截图功能的库文件。在实际使用中,你需要先在Java层创建一个JNI接口,然后在C/C++层实现...

    虚化场景高斯模糊

    在Java层,可以使用Bitmap的`getPixels()`和`setPixels()`方法直接操作像素,但这种方法效率较低,不适用于大量或实时的模糊处理。为提高效率,可以使用 Renderscript,这是一种在Android中优化计算密集型任务的编程...

    安卓图片旋转放大缩写透明度调整例子_图片大小调整.zip

    可以使用Color类的`alpha()`方法设置Alpha值,然后用`setPixel()`或`setPixels()`方法更新Bitmap的像素。 4. 示例代码: ```java Bitmap originalBitmap = BitmapFactory.decodeFile(filePath); Matrix matrix = ...

    android拍照及RGB565

    你可以使用`Bitmap.createBitmap()`和`Bitmap.copy()`来创建新的位图,然后用`setPixels()`和`getPixels()`进行像素级别的操作。 总结来说,Android开发者需要掌握如何调用摄像头、处理拍照结果以及进行图像格式...

    To_RLE_ShowImage.zip

    为了优化性能,你还可以考虑在解码过程中利用Android的硬件加速特性,比如使用Bitmap的createBitmap函数创建一个新的Bitmap,并使用setPixels方法快速填充像素。 总的来说,将图片转换为Android适用的RLE格式并在...

    BitmapFun_Android.rar

    9. **图片处理**:可能包含滤镜效果、裁剪、拼接等图像处理功能,这些通常通过操作Bitmap的像素数据实现,如使用`getPixels()`和`setPixels()`。 10. **性能优化**:项目中可能讨论了如何使用硬件加速、避免内存...

    Android-如何将RGB彩色图转换为灰度图方法介绍

    这种方法虽然简单直观,但处理大量像素时可能会比较耗时。在实际应用中,为了提高性能,可以考虑使用其他优化技术,如多线程处理或使用硬件加速API。 总之,将RGB彩色图转换为灰度图是Android图像处理中的常见操作...

    android常用图片特效处理.zip

    直接操作像素数据(通过getPixels()和setPixels())也能实现各种效果。 4. **图像滤镜与特效**:Android提供了 Renderscript 和 OpenGL ES 用于实现更复杂的图像处理,如模糊、锐化、边缘检测等滤镜效果。...

Global site tag (gtag.js) - Google Analytics