图片与二进制及字符相互换化
把图片转化为二进制或字符串,用于在网络中发送与存储数据.
一:图片转字符
过程:DisplayObject>bitmapData>ByteArray>Base64>String
把图片转化为二进制或字符,使用AS3自带的JPEGEncoder和PNGEncoder,其中JPEG格式就算使用100%的品质在还原时还是失真得比较严重.
下面是把位图的bitmapData数据转化为二进制数据,再输出成字符串形式.
AS3代码
- var?bitmapData:BitmapData?=?new?BitmapData(image.width,image.height);?????????? ??
-
bitmapData.draw(image);??
-
var?encoder:PNGEncoder?=?new?PNGEncoder();??
-
var?bytes:ByteArray=encoder.encode(bitmapData);??
-
var?Base64:Base64Encoder=new?Base64Encoder;??
-
var?imageStr:String=Base64.toString();??
二:字符转图片
过程:String>Base64>ByteArray>Bitmap>DisplayObject
还原时,先使用Base64Decoder转为Base64编码的ByteArray,再用Loader对象来读取为Bitmap,完成还原过程.
AS3代码
- var?spr:Sprite=new?Sprite; ??
-
var?Base64:Base64Decoder=new?Base64Decoder; ??
-
Base64.decode(imageStr);??
-
var?bytes:ByteArray=Base64.toByteArray();??
-
var?load:Loader=new?Loader(); ??
-
load.loadBytes(bytes);??
-
load.contentLoaderInfo.addEventListener(Event.COMPLETE,?complete); ??
-
function?complete(event:Event):void?{ ??
-
????var?bitMap:Bitmap=event.target.content?as?Bitmap;??
- ????spr.addChild(bitMap); ??
- }??