`
netlynx206
  • 浏览: 40201 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Action script如何复制一个Bitmap对象

    博客分类:
  • flex
阅读更多

本人最近遇到需要复制一个Bitmap对象的问题,应用场景如下:

在我的一个Flash中经常需要加载同样的图片,而这张图片也是比较大的,所以就想第一次使用后就把这张图片缓存起来,以后用时直接从缓存读取就可以了,因此就遇到Bitmap对象的复制问题,在网上搜了一下,网友们有两种解决方案,如下
方案1:

Title public class MyImage{
  public var bitmap: Bitmap;
  public var url: String;
  public var x: number;
  public var y: number;

  public function clone(): MyImage()
  {
      var myImage: MyImage = new MyImage();
      myImage.bitmap = this.bitmap.clone;
      myImage.url = this.url;
      myImage.x = this.x;
      myImage.y = this.y;
      return myImage;
  }
}

这种方案网上有人说可以,但是我自己试了一下,好像不行,“this.bitmap.clone”这句话不对,Bitmap就没有clone这个属性
方案2:

...

import flash.net.registerClassAlias;
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;

...

public function clone(source:Object) :* {
        var typeName:String = getQualifiedClassName(source);//获取全名
        var packageName:String = typeName.split("::")[1];//切出包名
        var type:Class = Class(getDefinitionByName(typeName));//获取Class

        registerClassAlias(packageName, type);//注册Class
       
        //复制对象
        var copier:ByteArray = new ByteArray ();
        copier.writeObject(source);
        copier.position = 0;
        return copier.readObject();
}

这种方案虽然不报错,对象也复制成功了,但是好像图片就是无法正常显示
方案3:这是我自己的方案,其实也是很简单的事情

new Bitmap(sourceBitmap.bitMapData.clone())

Bitmap的bitmapData有clone的方法
这个方法我试过,可以正常使用

分享到:
评论
1 楼 wllove23 2011-07-28  
但是如果是一个继承于Bitmap的类要实现对象克隆呢?比如说GIFPlayer,不知道这个LZ用过没有。这是一个专门用来展示gif图片的,来补充Flex的image组件不支持gif动态展示的。

相关推荐

    Activity跳转时传递Bitmap对象

    本篇文章将深入探讨如何在Activity跳转时传递Bitmap对象,并以一个Demo为例进行讲解。 首先,理解Bitmap的基本概念。Bitmap对象存储了图像的像素数据,可以是位图或压缩格式。它们占用大量的内存,因此在处理时需要...

    bitmap数据结构复制

    Bitmap数据结构是计算机图形学和图像处理领域中的一个重要概念,特别是在低级编程和系统级操作中,例如在操作系统内核、设备驱动程序或游戏引擎中。Bitmap,也称为位图,是一种像素阵列的表示方式,它直接存储了图像...

    c#Bitmap类和Graphics类

    一、Bitmap类 Bitmap类是C#中用于图像处理的基本类,它提供了多种方法来操作图像,包括图像的创建、编辑、显示和保存。Bitmap类的实例可以从文件、流、Image对象等多种来源进行初始化。 Bitmap类的常用方法包括: ...

    C++ Bmp图片复制功能实现 Bitmap

    C++ Bmp图片复制功能实现 Bitmap

    bitmap上传图片demo

    `BitmapFactory.decodeFile()`方法用于从本地文件加载Bitmap,而`Bitmap.createBitmap()`可以创建一个新的Bitmap对象,指定其尺寸、颜色格式和配置。 2. 图片加载优化: 不恰当的Bitmap使用可能导致内存溢出,因此...

    将Bitmap转换为Byte[]

    1. **加载或创建Bitmap**:首先,你需要有一个Bitmap对象。这可以通过从文件加载(如BMP、JPEG、PNG等格式)或者程序内创建一个新的Bitmap实现。 2. **获取Bitmap信息**:使用`CBitmap`的成员函数`GetBitmapBits()`...

    把一个bitmap资源变成圆形图像工具方法

    1. 创建一个与原Bitmap大小相同的Bitmap对象,设置其配置为ARGB_8888,以支持透明度。 2. 创建一个新的Canvas对象,使用这个新Bitmap作为它的画布。 3. 设置一个Paint对象,用于绘制Bitmap。设置Paint的抗锯齿属性为...

    android 把一个view视图转换成bitmap 保存到本地

    2. **准备Canvas**:`Canvas`是用来绘制Bitmap的画布,通过`Bitmap.createBitmap()`方法返回的Bitmap对象,我们可以创建一个与之关联的Canvas对象。 3. **绘制View**:在Canvas上绘制View的内容。通过`View.draw...

    android根据url得到bitmap对象再做渲染处理 的3种效果

    在Android中,可以创建一个新的Bitmap,遍历原Bitmap的每个像素,根据阈值进行转换: ```java public static Bitmap binarize(Bitmap src, int threshold) { int width = src.getWidth(); int height = src....

    canvas 转换成bitmap

    首先,我们需要创建一个 Bitmap 对象,并将其设置为 Canvas 的绘制目标。然后,我们可以使用 Canvas 的 draw 方法将图形绘制到 Bitmap 上。最后,我们可以将 Bitmap 设置到 ImageView 中,以便显示图形。 下面是一...

    用MFC绘制Bitmap

    要在MFC程序中创建一个空的Bitmap对象,你可以先实例化`CBitmap`类,然后调用`CreateBitmap`函数。例如: ```cpp CBitmap bitmap; bitmap.CreateBitmap(nWidth, nHeight, 1, nBitsPerPixel, NULL); ``` 其中,...

    Android中利用C++处理Bitmap对象的实现方法

    Android 中利用 C++ 处理 Bitmap 对象的实现方法 Android 中利用 C++ 处理 Bitmap 对象的实现方法是非常重要的,因为 Java 代码的运行速度太慢,无法满足对图像的密集计算需求。因此,使用 C++ 语言来处理 Bitmap ...

    C#中bitmap、stream、byte类型转换实例

    最后,我们可以使用Image.FromStream方法从Stream创建一个新的Bitmap对象。 ```csharp Bitmap restoredBitmap = Image.FromStream(imageStream) as Bitmap; // 从Stream还原Bitmap ``` 以上就是C#中Bitmap、Stream...

    图形图像bitmap.rar

    在Android中,Bitmap对象代表一个位图,也就是像素数据的集合。这些像素数据可以是本地资源、网络资源或者内存中的数据。Bitmap可以是静态图像,也可以动态组合形成动画效果。描述中提到的"图像动画bitmap"可能是一...

    Bitmap的相关优化及使用

    因此,一个1000x1000像素的24位色Bitmap将占用约3MB的内存空间。 二、Bitmap的优化策略 1. **使用适当的数据类型**:在创建Bitmap时,选择合适的配置,如ARGB_8888(32位)或RGB_565(16位)。RGB_565能减少一半的...

    Bitmap_transform.rar_Bitmap Transform_bitmap

    将这个数组转换为Bitmap,需要创建一个新的Bitmap对象,设置其宽度和高度,然后遍历数组,用`SetPixel`方法设置每个像素。这种方法效率较低,因为SetPixel是昂贵的操作,适合小规模或简单操作。 2. **Bitmap到数组*...

    Android下利用Bitmap切割图片

    切割图片通常指的是从原始图片中提取出一个矩形区域,这个操作在Android中可以通过Bitmap.createBitmap方法实现。以下是一个简单的示例,展示如何从Bitmap中裁剪出指定大小和位置的子Bitmap: ```java // 原始...

    android Bitmap相关知识介绍~~~

    这里的 oriBmp 是一个 Bitmap 对象,compress 方法将其压缩为 JPEG 格式,并将其写入到 FileOutputStream 中。 2. 图像处理 Bitmap 还可以用于图像处理,例如剪裁、缩放、旋转等等。 3. 图像显示 Bitmap 可以...

    android中对Bitmap图片设置任意角为圆角

    2. 创建一个新的Canvas对象,传入刚才创建的圆形Bitmap,然后在这个新的Canvas上进行绘制。 3. 使用Paint的setXfermode方法,设置一个 PorterDuff.Mode.DST_IN 模式,这会将源图像与模板图像相交的部分保留下来,...

    Android传递Bitmap对象在两个Activity之间

    传递User对象的步骤与传递Bitmap类似,只是我们将对象转换为字节数组,然后在另一个Activity中反序列化恢复。 ```java // 在源Activity中 User user = new User("John Doe", 30); Intent intent = new Intent(this,...

Global site tag (gtag.js) - Google Analytics