`
istudy
  • 浏览: 24666 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

AS3 bitmapdata与bytearray转换 (转)

阅读更多
原文 http://www.cppblog.com/sleepwom/archive/2010/06/30/119003.html

AS3 bitmapdata与bytearray转换
Apr
8
2008
bitmapdata.getpixel 方法是ActionScript 3.0中的一个新方法,可以把矩形内的像素读取成bytearray,但是这种bytearray又不能直接用loader.loadbytes来读,一读就会出现IOERROR。

为了达到可以直接用loader.loadbytes读取的目的,找了一下百度和GOOGLE,找到了以下方法,有需要的可以用用。

PS 以下代码转自互联网,牛C网只负责整理

/*
Copyright (c) 2007 Trevor McCauley - www.senocular.com
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS or IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS or COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES or OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT or OTHERWISE, ARISING
FROM, OUT OF or IN CONNECTION WITH THE SOFTWARE or THE USE or
OTHER DEALINGS IN THE SOFTWARE.
*/
package com.senocular.images {
import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.utils.ByteArray;
import flash.utils.Endian;
public class BMPEncoder {
/**
* Converts a BitmapData instance into a 32-bit
* BMP image.
* @param bitmapData A BitmapData instance of the image
* desired to have converted into a Bitmap (BMP).
* @return A ByteArray containing the binary Bitmap (BMP)
* representation of the BitmapData instance passed.
*/
public static function encode(bitmapData:BitmapData):ByteArray {
// image/file properties
var bmpWidth:int = bitmapData.width;
var bmpHeight:int = bitmapData.height;
var imageBytes:ByteArray = bitmapData.getPixels(bitmapData.rect);
var imageSize:int = imageBytes.length;
var imageDataOffset:int = 0x36;
var fileSize:int = imageSize + imageDataOffset;
// binary BMP data
var bmpBytes:ByteArray = new ByteArray();
bmpBytes.endian = Endian.LITTLE_ENDIAN; // byte order
// header information
bmpBytes.length = fileSize;
bmpBytes.writeByte(0x42); // B
bmpBytes.writeByte(0x4D); // M (BMP identifier)
bmpBytes.writeInt(fileSize); // file size
bmpBytes.position = 0x0A; // offset to image data
bmpBytes.writeInt(imageDataOffset);
bmpBytes.writeInt(0x28); // header size
bmpBytes.position = 0x12; // width, height
bmpBytes.writeInt(bmpWidth);
bmpBytes.writeInt(bmpHeight);
bmpBytes.writeShort(1); // planes (1)
bmpBytes.writeShort(32); // color depth (32 bit)
bmpBytes.writeInt(0); // compression type
bmpBytes.writeInt(imageSize); // image data size
bmpBytes.position = imageDataOffset; // start of image data...
// write pixel bytes in upside-down order
// (as per BMP format)
var col:int = bmpWidth;
var row:int = bmpHeight;
var rowLength:int = col * 4; // 4 bytes per pixel (32 bit)
try {
// make sure we're starting at the
// beginning of the image data
imageBytes.position = 0;
// bottom row up
while (row--) {
// from end of file up to imageDataOffset
bmpBytes.position = imageDataOffset + row*rowLength;
// read through each column writing
// those bits to the image in normal
// left to rightorder
col = bmpWidth;
while (col--) {
bmpBytes.writeInt(imageBytes.readInt());
}
}
}catch(error:Error){
// end of file
}
// return BMP file
return bmpBytes;
}
}
}
分享到:
评论

相关推荐

    AS3 PNG图片转二进制

    在AS3(ActionScript 3)中...以上就是关于“AS3 PNG图片转二进制”的详细知识点,包括了AS3的基本操作、图片处理、二进制数据的使用,以及可能的代码结构。这些知识对于开发涉及大量图像加载和处理的AS3项目至关重要。

    as3拍照程序

    4. **BitmapData类**:`BitmapData`是AS3中处理像素数据的关键类。要保存拍照瞬间的图像,可以使用`draw()`方法将`Video`对象绘制到`BitmapData`对象中,然后可以将此数据转换为`Bitmap`对象,或者保存为图片文件。 ...

    AS3中的PNG编码—用FLASH生成PNG

    1. **BitmapData对象**:这是AS3中处理像素数据的核心类。你可以通过它创建新的位图,或者从现有的显示对象(如Sprite或MovieClip)获取位图数据。BitmapData对象有`draw()`方法,可以将舞台上的内容绘制到位图上。 ...

    flash as3 php 保存存图片

    在IT行业中,将Flash AS3生成的图片保存到服务器通常涉及到客户端与服务器之间的交互,这里主要涉及的技术点包括Flash ActionScript 3 (AS3)、PHP以及文件上传处理。下面我们将详细探讨这些知识点。 首先,Flash AS...

    flex 上传图像

    本主题将详细探讨如何使用Flex来以二进制流的形式上传图像,以及如何将BitmapData对象转换为ByteArray,以便进行网络传输。 在Flex中,图像可以被表示为BitmapData对象,它包含了图像的所有像素信息。在上传图像时...

    as3 等比切割图片,一键切割图片保存+自动命名图片

    在AS3中,我们可以利用BitmapData类来处理图像数据。BitmapData对象可以代表位图图像,允许我们进行读取、写入、操作和绘制像素。以下是实现等比切割的基本步骤: 1. **加载图片**:使用Loader类加载图片资源。你...

    AS3摄像头拍照保存到本地

    3. **捕获帧并转换为位图**: 要拍照,我们需要捕获当前的视频帧并将其转换为`BitmapData`对象。这可以通过调用`Video`对象的`drawToBitmap`方法实现: ```actionscript var bitmapData:BitmapData = new BitmapData...

    flash as3 实现简单视频截图

    2. **ActionScript 3**: AS3是Flash平台的主要编程语言,它提供了一种强大的面向对象的语法,用于控制动画、处理事件、与用户交互以及访问硬件资源,如摄像头。 3. **摄像头访问**: AS3允许开发者通过`Camera`类来...

    as3.0 图片保存类 JPEGEncoder类

    在ActionScript 3.0(AS3.0)中,`JPEGEncoder`类是一个非常重要的工具,它允许开发者将`ByteArray`对象编码为JPEG格式的图像数据,进而可以保存为图片文件。这个过程通常用于在应用程序中处理动态生成的图像或者从...

    AS3常用英文单词大全

    #### 一、AS3与英文单词大全的关联性 **AS3**,即ActionScript 3,是Adobe Flash平台的一种强类型、面向对象的编程语言,广泛应用于创建动态Web应用、游戏和多媒体内容。本文档,由TKCB精心整理,旨在为学习者提供...

    PNGEncoder

    AS3位图压缩类,PNG编码. 通过PNGEncoder对bitmapdata进行encode转换为对应图像格式的bytearray,PNGEncoder 类使用便携网络图形 (PNG) 无损压缩将原始位图图像转换为编码图像。

    AS3.0 上传保存图片

    7. **安全与权限**:由于涉及到用户文件系统和网络交互,AS3.0的文件操作受到严格的安全限制。确保应用遵守沙箱模型,获取必要的用户权限,并遵循最佳实践,以防止安全漏洞。 8. **性能优化**:处理大图片文件时,...

    flashcam资源

    这个项目结合了ActionScript 3(AS3)和PHP两种编程语言,以实现动态图像到JPEG格式的转换和存储。 在AS3中,Flash Player提供了对用户计算机上摄像头的访问能力。`Flashcam`可能是一个自定义的类或组件,它允许...

    flash 图片解析

    5. **绘制图像**:将解析出的像素数据转换为`BitmapData`对象,然后可以创建`Bitmap`对象并将其添加到舞台上。 接下来,我们讨论GIF格式。GIF是一种支持动画的图像格式,包含多个帧,每帧可以有不同的持续时间和...

Global site tag (gtag.js) - Google Analytics