View Code

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中的序列化与反序列化相关推荐

  1. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...

    点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...

  2. python中常用的序列化模块_Python中的序列化和反序列化

    为什么要序列化 内存中的字典.列表.集合以及各种对象,如何保存到一个文件中. 设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列.所以必须把数据额转换为字节序列,输出到文件, ...

  3. 谈谈:.Net中的序列化和反序列化

    序列化和反序列化相信大家都经常听到,也都会用, 然而有些人可能不知道:.net为什么要有这个东西以及.net Frameword如何为我们实现这样的机制, 在这里我也是简单谈谈我对序列化和反序列化的一 ...

  4. .Net 中关于序列化和反序列化Json的方法

    .Net SDK中关于序列化和反序列化Json的方法 项目中遇到和服务端交互时需要传递数据包为json格式的包,所以在服务端和SDK中都需要对json进行解析和组合的操作, 并且对一些复杂结构的jso ...

  5. js序列化与反序列化和C#中json序列化与反序列化

    序列化:将Object转换成JSON字符串 let data = JSON.stringify(obj); // 将JSON对象转化为JSON字符 let data = obj.toJSONStrin ...

  6. OWASP TOP 10(六)反序列化漏洞(序列化和反序列化、漏洞原理、PHP中的序列化和反序列化、魔术方法、Typecho_v1.0中的反序列化漏洞)

    文章目录 反序列化漏洞 一.概述 1. 序列化和反序列化 2. 序列化的目的 二.PHP中的序列化与反序列化 1. 概述 2. 示例序列化与反序列化 3. 反序列化漏洞 - PHP中的魔术方法 - T ...

  7. JAVA中JSON序列化和反序列化

    JAVA中JSON序列化和反序列化 1 FASTJSON的序列化和反序列化 1.1 主函数 1.2 自定义对象 2 GSON序列化和反序列化 2.1 主函数 2.2 自定义对象 总结 不同包序列化和反 ...

  8. php中的序列化与反序列化[喜悦原创]

    php中的序列化与反序列化 1.serialize() <===> unserialize(),这个大家用的最多, 老熟人了 session保存默认用的就是这个. 如果想存储对象,数组数据 ...

  9. Unity中的序列化和反序列化

    一:前言 序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程.序列化最主要的用途就是传递对象和保存对象 在Unity中保存和加载.prefab.scene.Inspecto ...

最新文章

  1. Machine Learning | (11) 回归性能评估与欠拟合、过拟合
  2. 结对第2次作业——WordCount进阶需求
  3. 信息系统项目管理知识--计算机网络基础
  4. 数据清洗的基本流程_数据分析小白学习之路(三)——Excel多练熟能生巧
  5. git指令快捷 idea_IDEA+Git+Gitlab使用详细教程
  6. java动态拼接请求_在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案...
  7. 教师节PSD分层海报设计模板 | 最好的海报,送给最好的老师们
  8. 突然出现 -bash: pod: command not found 的解决方法
  9. Java从入门到精通+第三版.pdf
  10. 2022-6-25 12点 程序爱生活 恒指选择继续向上震荡,而且等来了推动前期上涨原因的一个消息:港股的ETF通过港股通可以交易
  11. Kubesphere流水线集成(Git、Maven、Docker、K8S)
  12. 五招教你做好企业年终绩效考核,太实用了!
  13. CSharp代码示例每日一讲: 在GDI+中使用画笔和画刷
  14. 全面解析Linux 内核 3.10.x - 内核进程
  15. 上市心不死:墨迹天气急需新故事
  16. bqstudio软件操作指南
  17. Python----初次见面,请多关照!
  18. 2.1.3 Abp vNext 地磅无人值守 业务实现
  19. 【操作系统】磁盘转速速度为7200PRM,平均寻道时间为6ms,每磁道存储1MB数据。如果数据块大小为4KB,则读取一块数据时,数据平均传输速率为
  20. 深度学习之艺术风格迁移

热门文章

  1. spark连接Oracle数据库,Spark通过jdbc采用分区的方式从oracle读数据
  2. 机器人 陆梅东_机器人知识与实践比赛获奖 - 上海徐汇区青少年活动中心
  3. Matlab 如何回退上一步、批量注释以及取消注释
  4. FPGA的设计艺术(6)STA实战之SmartTime时序约束及分析示例(I)
  5. Dubbo作者亲述:那些辉煌、沉寂与重生的故事
  6. 从零开始学习PYTHON3讲义(一)认识Python
  7. TLB的作用及工作原理
  8. 人工智能行业应用之:为建筑工程提供全新解决方案
  9. 专用ADC与群集软件之比较
  10. javascript里的prototype