`
diding
  • 浏览: 81643 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

Flex存bmp图像

    博客分类:
  • Flex
阅读更多
前言:

这阵子没事在研究buzzword,并试图还原前台,费了将近三周了,还原了:
EditorFonts.swf
FrameCSS.swf
以及res下面mxml文件成as文件
vu下面的class大家都看得到,只需要适当修改就可以了

还原的过程中,感触很多,总觉的gumbo 的 Text Layout Framework 需要改进的还有太多太多,也不知正式版出来后会怎么样?

正文:
昨晚没事,看到一个老外的bitmap的研究,很可惜针对movieclip,于是作了一个适当的修改,把它一个像JPEGEncoder那样可以适合flex components的class

1.运用实例:
?xml version="1.0" encoding="utf-8"?>
<FxApplication name="FileReference_save_test"
        xmlns="http://ns.adobe.com/mxml/2009"
        xmlns:mx="http://ns.adobe.com/mxml/2009"
        xmlns:net="flash.net.*"
        creationComplete="init();">
    <Script>
        <![CDATA[
            import mx.graphics.ImageSnapshot;
            import mx.graphics.codec.*;
            import net.diding.graphics.codec.BMPEncoder;

            private const jpegEnc:JPEGEncoder = new JPEGEncoder();
            private const bmpEnc:BMPEncoder = new BMPEncoder();
            
            private const xmlObj:XML = describeType(FileReference);

            private function init():void {
                textArea.text = xmlObj.toXMLString();
            }

            private function btn_click(evt:MouseEvent):void {
                //存为jpg
                //var imageSnap:ImageSnapshot = ImageSnapshot.captureImage(panel, 0, jpegEnc);
                //fileReference.save(imageSnap.data, "describeType.jpg");
                 
                 //存为bmp
                 var imageSnap:ImageSnapshot = ImageSnapshot.captureImage(panel, 0, bmpEnc);
                 fileReference.save(imageSnap.data, "describeType.bmp");
            }
        ]]>
    </Script>

    <Declarations>
        <net:FileReference id="fileReference" />
    </Declarations>

    <mx:Panel id="panel"
            width="500"
            height="300"
            verticalCenter="0"
            horizontalCenter="0">
        <mx:TextArea id="textArea"
                editable="true"
                width="100%"
                height="100%" />
        <mx:ControlBar horizontalAlign="right">
            <Button id="btn"
                    label="Save"
                    click="btn_click(event);" />
        </mx:ControlBar>
    </mx:Panel>

</FxApplication>



2.BMPEncoder.as
package net.diding.graphics.codec
{
	import flash.display.BitmapData;
	import mx.graphics.codec.IImageEncoder;
	import flash.utils.ByteArray;
	import flash.utils.Endian;
	public class BMPEncoder implements IImageEncoder
	{
		public function BMPEncoder()
		{
		}
		public function encode(bitmapData:BitmapData):ByteArray
		{
			// 图像属性
			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;
			
			// 图像数据
			var bmpBytes:ByteArray = new ByteArray();
			bmpBytes.endian = Endian.LITTLE_ENDIAN;
			
			// header信息
			bmpBytes.length = fileSize;
			bmpBytes.writeByte(0x42); 
			bmpBytes.writeByte(0x4D); 
			bmpBytes.writeInt(fileSize); 
			bmpBytes.position = 0x0A; 
			bmpBytes.writeInt(imageDataOffset);
			bmpBytes.writeInt(0x28); 
			bmpBytes.position = 0x12; 
			bmpBytes.writeInt(bmpWidth);
			bmpBytes.writeInt(bmpHeight);
			bmpBytes.writeShort(1); 
			bmpBytes.writeShort(32); 
			bmpBytes.writeInt(0); 
			bmpBytes.writeInt(imageSize); 
			bmpBytes.writeUnsignedInt(0x2e30); 
			bmpBytes.writeUnsignedInt(0x2e30);
			
			bmpBytes.position = imageDataOffset; 
			// 存为bmp格式
			var col:int = bmpWidth;
			var row:int = bmpHeight;
			var rowLength:int = col * 4; 
			try {
				imageBytes.position = 0;
				while (row--) {
					
					bmpBytes.position = imageDataOffset + row*rowLength;
					col = bmpWidth;
					while (col--) {
						bmpBytes.writeInt(imageBytes.readInt());
					}
				}	
			}catch(error:Error){	
			}
			// 返回BMP数据文件
			return bmpBytes;
		}

		public function get contentType():String
		{
			return null;
		}

		public function encodeByteArray(byteArray:ByteArray, width:int, height:int, transparent:Boolean=true):ByteArray
		{
			return null;
		}
		
	}
}
分享到:
评论

相关推荐

    FLEX中显示类型为BMP的图片

    这篇名为“FLEX中显示类型为BMP的图片”的博客文章提供了如何在Flex应用中处理BMP图像的方法。首先,我们需要了解Flex的基本架构,它是基于ActionScript 3(AS3)的,这是一种面向对象的编程语言,用于创建富互联网...

    flex+spring图片上传及预览

    本教程将关注如何结合Adobe Flex前端框架与Spring后端框架来实现这一功能,同时处理bmp图像格式的转换。Flex提供了丰富的用户界面组件和交互性,而Spring则提供了强大的后端服务支持。 首先,我们需要在Flex客户端...

    GIF动画制作 Flex GIF Animator 9.05

    2. **图像导入与处理**:支持导入各种图像格式(如JPEG、PNG、BMP等),并可对图像进行裁剪、旋转、调整大小等预处理操作,为制作GIF动画提供便利。 3. **动画效果**:内置多种过渡和特效,如淡入淡出、移动、旋转...

    Flex4视频教程_03-03使用Image组件.rar

    本教程聚焦于“使用Image组件”,这是一部分关于如何在Flex4应用中集成和操作图像的重要内容。在Flex4中,Image组件允许开发者轻松地展示静态图像和动态加载网络上的图片资源。 1. **Image组件介绍**: - Image...

    java准确读取flash以及jpg,gif,bmp等格式文件源码.rar

    Java编程语言在处理各种文件类型,如Flash(SWF)、JPEG(JPG)、GIF和BMP等图像格式时,提供了强大的支持。本压缩包文件包含的源码着重于如何在Java环境中准确地读取这些文件,从而实现对它们内容的解析、显示或...

    Flex 画面快照截图及显示实现代码

    首先,Flex SDK中的`flash.display`包提供了两个关键类:`Bitmap`和`BitmapData`,它们用于处理图像数据。`BitmapData`类的`draw()`方法是实现截图的核心,它接受一个实现了`IBitmapDrawable`接口的对象作为参数,这...

    多参数生物反馈仪简介.doc

    它不仅支持单独的图像或声音刺激,还可以结合图像和声音进行复合刺激,刺激格式多样,如BMP图像和MIDI、MP3/Wave音频文件。 2. 生理信息记录:所有采集的信号可以进行频谱处理,如心率、呼吸频率、皮肤电导等,还...

    MobileFlex调用摄像头

    - Flash AIR还支持PNG、BMP等多种格式,可以根据具体需求选择合适的格式进行处理。 - **跨平台兼容性**: - 使用Flash AIR开发的应用程序可以在多个平台上运行,包括Windows、Mac OS、iOS和Android等。 - 开发者...

    (Intel原厂主板开机LOGO个性化修改.docx

    在工作区中选择Flex Modules,然后找到“Default BIOS POST Image”并编辑它。编辑过程中,可以替换默认的开机LOGO图像。 总的来说,个性化Intel原厂主板开机LOGO的过程涉及到下载和使用特定工具,以及对图像格式和...

    Flash 反编译工具 Flash Decompiler Trillix 5.3.1400 中文汉化版.zip

    图像,声音,视频,文本和二进制数据可以分别提取到SWF和FLA还为其他格式(如JPEG , PNG或BMP格式图像) 。 无需转换为FLA编辑SWF Flash Decompiler Trillix 5.3.1400 汉化版可以让你无需转换为FLA编辑SWF文件中的...

    (精品)Illustrator-CS4实战教程课件.ppt

    此外,还提到了常见的图像文件格式,如BMP、PSD、JPG、GIF和TIF等。 Illustrator CS4的新增和增强功能显著提升了工作效率。新增功能如多画板支持、选项卡式文档窗口、智能参考线和快速对齐工具,以及扩展的渐变面板...

    GIS图标大全(项目开发常用兼个性图标)

    这些图标以BMP和ICO格式提供,两者都是常见的图像文件格式,BMP是无损的位图格式,而ICO则是用于Windows系统中的图标文件格式,支持多种尺寸和颜色深度,便于在不同分辨率的设备上使用。 这个图标集合包括但不限于...

    图片相册展示代码

    7. `doc.bmp`:这可能是一个简单的帮助文档,用位图图像格式提供了一些说明或指南。 8. `events in as2.txt` 和 `使用说明25175com.txt`:这两个文本文件可能分别提供了AS2(ActionScript 2)事件处理的参考和图片...

    如何使用Arduino制作遥控机器人手-项目开发

    “Robot%20Hand.bmp”可能是一个项目完成后的示意图,展示了最终机械手的外观。通过查看这个图像,你可以理解机械手的设计原理,比如每个关节是如何通过伺服电机实现运动的,以及如何将传感器安装在合适的位置以捕捉...

    函数的过程名

    - 图片链接处理:检查文件扩展名,如果为常见图像格式(如 jpg、bmp、png 或 gif),则插入图片标签。 #### 6. **分页处理** - **分页计算**:根据总条数 `totalPut` 和每页显示数量 `MaxPerPage` 计算出当前...

Global site tag (gtag.js) - Google Analytics