AS3中的序列化与反序列化
import flash.events.MouseEvent;import flash.utils.ByteArray;import com.adobe.images.JPGEncoder;import flash.display.Bitmap; var bytes:ByteArray;var bit:SampleImage;//SampleImage是库中的图片链接"类名" //将图片序列化为ByteArrayfunction btnEncodeClick(e:MouseEvent):void {var jpg:JPGEncoder = new JPGEncoder(); bytes = jpg.encode(bit); txtArray.text = "";for (var i:uint=0,j=bytes.length; i<j; i++) { txtArray.appendText(bytes[i].toString() + ","); }if (txtArray.text.length > 0) { txtArray.text = txtArray.text.substring(0,txtArray.text.length - 1); } btnEncode.enabled = false; btnEncode.removeEventListener(MouseEvent.CLICK,btnEncodeClick); btnDecode.addEventListener(MouseEvent.CLICK,btnDecodeClick);} //将ByteArray反序列化为图象function btnDecodeClick(e:MouseEvent):void {if (bytes==null){return;}var _ld:Loader = new Loader(); _ld.loadBytes(bytes); _ld.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); btnDecode.enabled = false; btnDecode.removeEventListener(MouseEvent.CLICK,btnDecodeClick);} //加载完成的回调函数function onComplete(e:Event):void {var bitMap:Bitmap = e.target.content as Bitmap;//读取Bitmap addChild(bitMap); bitMap.y = 7; bitMap.x = 330;} function init():void{ bit = new SampleImage();var bitMap:Bitmap = new Bitmap(bit); bitMap.x = 100; bitMap.y = 7; addChild(bitMap); btnEncode.addEventListener(MouseEvent.CLICK,btnEncodeClick); } init();
import flash.events.MouseEvent;import flash.utils.ByteArray;import flash.display.Bitmap;import flash.events.Event;import flash.net.FileReference; var bytes:ByteArray;var bit:SampleImage;//SampleImage是库中的图片链接"类名" //将图片序列化为ByteArrayfunction btnEncodeClick(e:MouseEvent):void { bytes = new ByteArray(); bytes.writeUnsignedInt(bit.width);// 保存图像宽度; bytes.writeBytes(bit.getPixels(bit.rect));//保存图像字节数组; bytes.compress(); /* var fileRef:FileReference = new FileReference(); fileRef.save(bytes,"image.bmd"); // 默认文件名: "image.bmd";*/ trace(bytes.length); txtArray.text = ""; for (var i:uint=0,j=bytes.length; i<j; i++) { txtArray.appendText(bytes[i].toString() + ","); } if (txtArray.text.length > 0) { txtArray.text = txtArray.text.substring(0,txtArray.text.length - 1); } btnEncode.enabled = false; btnEncode.removeEventListener(MouseEvent.CLICK,btnEncodeClick); btnDecode.addEventListener(MouseEvent.CLICK,btnDecodeClick);} //将ByteArray反序列化为图象function btnDecodeClick(e:MouseEvent):void {if (bytes == null) {return; } /*var ldr:URLLoader = new URLLoader(); ldr.dataFormat = URLLoaderDataFormat.BINARY;// ** 这里一定要指定dataFormat为URLLoaderDataFormat.BINARY ** ldr.addEventListener(Event.COMPLETE, on_fileLoad); ldr.addEventListener(IOErrorEvent.IO_ERROR, on_fileLoadError); var pathToBitmapDataFile:String = "image.bmd"; ldr.load(new URLRequest(pathToBitmapDataFile));*/ bytes.uncompress();var iWidth:int = bytes.readUnsignedInt();var iHeight:int = ((bytes.length - 4) / 4) / iWidth; var bmd:BitmapData = new BitmapData(iWidth,iHeight,true,0); bmd.setPixels(bmd.rect, bytes); var bm:Bitmap = new Bitmap(bmd); addChild(bm); bm.y = 7; bm.x = 330; btnDecode.enabled = false; btnDecode.removeEventListener(MouseEvent.CLICK,btnDecodeClick);} /*function on_fileLoadError(evt:Event):void { trace(evt.type);} function on_fileLoad(evt:Event):void { if (evt.type == Event.COMPLETE) { var data:ByteArray = URLLoader(evt.target).data as ByteArray; if (data) { try { data.uncompress(); } catch (e:Error) { } // 此时的数据已经是解压后的字节数组了 // 数据解压后 var width:int = data.readUnsignedInt();// 起始的4个字节 // after data.uncompress() var height:int = ((data.length - 4) / 4) / width; // (data.length - 4) ** 去掉开始的4个字节,其余的便是位图的字节数组了 ** // ((data.length - 4) / 4) ** 每个像素4个字节长, 所以要除以4得到总像素数 ** // ((data.length - 4) / 4) / 宽度 ** 记住,因为是矩形才能这样计算出高度 ** var bmd:BitmapData = new BitmapData(width,height,true,0);// 32位支持alpha通道的位图 bmd.setPixels(bmd.rect, data); // 数据的position指向第5个字节了; var bm:Bitmap = new Bitmap(bmd); addChild(bm); } } }*/ function init():void { bit = new SampleImage();var bitMap:Bitmap = new Bitmap(bit); bitMap.x = 100; bitMap.y = 7; addChild(bitMap); btnEncode.addEventListener(MouseEvent.CLICK,btnEncodeClick); } init();
转载于:https://www.cnblogs.com/ndljava/archive/2012/01/16/2323774.html
AS3中的序列化与反序列化相关推荐
- fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...
点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...
- python中常用的序列化模块_Python中的序列化和反序列化
为什么要序列化 内存中的字典.列表.集合以及各种对象,如何保存到一个文件中. 设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列.所以必须把数据额转换为字节序列,输出到文件, ...
- 谈谈:.Net中的序列化和反序列化
序列化和反序列化相信大家都经常听到,也都会用, 然而有些人可能不知道:.net为什么要有这个东西以及.net Frameword如何为我们实现这样的机制, 在这里我也是简单谈谈我对序列化和反序列化的一 ...
- .Net 中关于序列化和反序列化Json的方法
.Net SDK中关于序列化和反序列化Json的方法 项目中遇到和服务端交互时需要传递数据包为json格式的包,所以在服务端和SDK中都需要对json进行解析和组合的操作, 并且对一些复杂结构的jso ...
- js序列化与反序列化和C#中json序列化与反序列化
序列化:将Object转换成JSON字符串 let data = JSON.stringify(obj); // 将JSON对象转化为JSON字符 let data = obj.toJSONStrin ...
- OWASP TOP 10(六)反序列化漏洞(序列化和反序列化、漏洞原理、PHP中的序列化和反序列化、魔术方法、Typecho_v1.0中的反序列化漏洞)
文章目录 反序列化漏洞 一.概述 1. 序列化和反序列化 2. 序列化的目的 二.PHP中的序列化与反序列化 1. 概述 2. 示例序列化与反序列化 3. 反序列化漏洞 - PHP中的魔术方法 - T ...
- JAVA中JSON序列化和反序列化
JAVA中JSON序列化和反序列化 1 FASTJSON的序列化和反序列化 1.1 主函数 1.2 自定义对象 2 GSON序列化和反序列化 2.1 主函数 2.2 自定义对象 总结 不同包序列化和反 ...
- php中的序列化与反序列化[喜悦原创]
php中的序列化与反序列化 1.serialize() <===> unserialize(),这个大家用的最多, 老熟人了 session保存默认用的就是这个. 如果想存储对象,数组数据 ...
- Unity中的序列化和反序列化
一:前言 序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程.序列化最主要的用途就是传递对象和保存对象 在Unity中保存和加载.prefab.scene.Inspecto ...
最新文章
- Machine Learning | (11) 回归性能评估与欠拟合、过拟合
- 结对第2次作业——WordCount进阶需求
- 信息系统项目管理知识--计算机网络基础
- 数据清洗的基本流程_数据分析小白学习之路(三)——Excel多练熟能生巧
- git指令快捷 idea_IDEA+Git+Gitlab使用详细教程
- java动态拼接请求_在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案...
- 教师节PSD分层海报设计模板 | 最好的海报,送给最好的老师们
- 突然出现 -bash: pod: command not found 的解决方法
- Java从入门到精通+第三版.pdf
- 2022-6-25 12点 程序爱生活 恒指选择继续向上震荡,而且等来了推动前期上涨原因的一个消息:港股的ETF通过港股通可以交易
- Kubesphere流水线集成(Git、Maven、Docker、K8S)
- 五招教你做好企业年终绩效考核,太实用了!
- CSharp代码示例每日一讲: 在GDI+中使用画笔和画刷
- 全面解析Linux 内核 3.10.x - 内核进程
- 上市心不死:墨迹天气急需新故事
- bqstudio软件操作指南
- Python----初次见面,请多关照!
- 2.1.3 Abp vNext 地磅无人值守 业务实现
- 【操作系统】磁盘转速速度为7200PRM,平均寻道时间为6ms,每磁道存储1MB数据。如果数据块大小为4KB,则读取一块数据时,数据平均传输速率为
- 深度学习之艺术风格迁移