本人最近遇到需要复制一个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的方法
这个方法我试过,可以正常使用
分享到:
相关推荐
本篇文章将深入探讨如何在Activity跳转时传递Bitmap对象,并以一个Demo为例进行讲解。 首先,理解Bitmap的基本概念。Bitmap对象存储了图像的像素数据,可以是位图或压缩格式。它们占用大量的内存,因此在处理时需要...
Bitmap数据结构是计算机图形学和图像处理领域中的一个重要概念,特别是在低级编程和系统级操作中,例如在操作系统内核、设备驱动程序或游戏引擎中。Bitmap,也称为位图,是一种像素阵列的表示方式,它直接存储了图像...
一、Bitmap类 Bitmap类是C#中用于图像处理的基本类,它提供了多种方法来操作图像,包括图像的创建、编辑、显示和保存。Bitmap类的实例可以从文件、流、Image对象等多种来源进行初始化。 Bitmap类的常用方法包括: ...
C++ Bmp图片复制功能实现 Bitmap
`BitmapFactory.decodeFile()`方法用于从本地文件加载Bitmap,而`Bitmap.createBitmap()`可以创建一个新的Bitmap对象,指定其尺寸、颜色格式和配置。 2. 图片加载优化: 不恰当的Bitmap使用可能导致内存溢出,因此...
1. **加载或创建Bitmap**:首先,你需要有一个Bitmap对象。这可以通过从文件加载(如BMP、JPEG、PNG等格式)或者程序内创建一个新的Bitmap实现。 2. **获取Bitmap信息**:使用`CBitmap`的成员函数`GetBitmapBits()`...
1. 创建一个与原Bitmap大小相同的Bitmap对象,设置其配置为ARGB_8888,以支持透明度。 2. 创建一个新的Canvas对象,使用这个新Bitmap作为它的画布。 3. 设置一个Paint对象,用于绘制Bitmap。设置Paint的抗锯齿属性为...
2. **准备Canvas**:`Canvas`是用来绘制Bitmap的画布,通过`Bitmap.createBitmap()`方法返回的Bitmap对象,我们可以创建一个与之关联的Canvas对象。 3. **绘制View**:在Canvas上绘制View的内容。通过`View.draw...
在Android中,可以创建一个新的Bitmap,遍历原Bitmap的每个像素,根据阈值进行转换: ```java public static Bitmap binarize(Bitmap src, int threshold) { int width = src.getWidth(); int height = src....
首先,我们需要创建一个 Bitmap 对象,并将其设置为 Canvas 的绘制目标。然后,我们可以使用 Canvas 的 draw 方法将图形绘制到 Bitmap 上。最后,我们可以将 Bitmap 设置到 ImageView 中,以便显示图形。 下面是一...
要在MFC程序中创建一个空的Bitmap对象,你可以先实例化`CBitmap`类,然后调用`CreateBitmap`函数。例如: ```cpp CBitmap bitmap; bitmap.CreateBitmap(nWidth, nHeight, 1, nBitsPerPixel, NULL); ``` 其中,...
Android 中利用 C++ 处理 Bitmap 对象的实现方法 Android 中利用 C++ 处理 Bitmap 对象的实现方法是非常重要的,因为 Java 代码的运行速度太慢,无法满足对图像的密集计算需求。因此,使用 C++ 语言来处理 Bitmap ...
最后,我们可以使用Image.FromStream方法从Stream创建一个新的Bitmap对象。 ```csharp Bitmap restoredBitmap = Image.FromStream(imageStream) as Bitmap; // 从Stream还原Bitmap ``` 以上就是C#中Bitmap、Stream...
在Android中,Bitmap对象代表一个位图,也就是像素数据的集合。这些像素数据可以是本地资源、网络资源或者内存中的数据。Bitmap可以是静态图像,也可以动态组合形成动画效果。描述中提到的"图像动画bitmap"可能是一...
因此,一个1000x1000像素的24位色Bitmap将占用约3MB的内存空间。 二、Bitmap的优化策略 1. **使用适当的数据类型**:在创建Bitmap时,选择合适的配置,如ARGB_8888(32位)或RGB_565(16位)。RGB_565能减少一半的...
将这个数组转换为Bitmap,需要创建一个新的Bitmap对象,设置其宽度和高度,然后遍历数组,用`SetPixel`方法设置每个像素。这种方法效率较低,因为SetPixel是昂贵的操作,适合小规模或简单操作。 2. **Bitmap到数组*...
切割图片通常指的是从原始图片中提取出一个矩形区域,这个操作在Android中可以通过Bitmap.createBitmap方法实现。以下是一个简单的示例,展示如何从Bitmap中裁剪出指定大小和位置的子Bitmap: ```java // 原始...
这里的 oriBmp 是一个 Bitmap 对象,compress 方法将其压缩为 JPEG 格式,并将其写入到 FileOutputStream 中。 2. 图像处理 Bitmap 还可以用于图像处理,例如剪裁、缩放、旋转等等。 3. 图像显示 Bitmap 可以...
2. 创建一个新的Canvas对象,传入刚才创建的圆形Bitmap,然后在这个新的Canvas上进行绘制。 3. 使用Paint的setXfermode方法,设置一个 PorterDuff.Mode.DST_IN 模式,这会将源图像与模板图像相交的部分保留下来,...
传递User对象的步骤与传递Bitmap类似,只是我们将对象转换为字节数组,然后在另一个Activity中反序列化恢复。 ```java // 在源Activity中 User user = new User("John Doe", 30); Intent intent = new Intent(this,...