当前位置: 代码迷 >> Web前端 >> 图片与二进制及字符互相换化
  详细解决方案

图片与二进制及字符互相换化

热度:118   发布时间:2012-09-09 09:27:54.0
图片与二进制及字符相互换化

把图片转化为二进制或字符串,用于在网络中发送与存储数据.

一:图片转字符

过程:DisplayObject>bitmapData>ByteArray>Base64>String

把图片转化为二进制或字符,使用AS3自带的JPEGEncoder和PNGEncoder,其中JPEG格式就算使用100%的品质在还原时还是失真得比较严重.

下面是把位图的bitmapData数据转化为二进制数据,再输出成字符串形式.

var bitmapData:BitmapData = new BitmapData(image.width,image.height);             
bitmapData.draw(image);//转化为BitmapData数据        
var encoder:PNGEncoder = new PNGEncoder();//也可以使用JPEG格式 new JPEGEncoder(100)      
var bytes:ByteArray=encoder.encode(bitmapData);//转化为二进制数据        
var Base64:Base64Encoder=new Base64Encoder;//将字符串或 ByteArray 编码为 Base64 编码的字符串。      
var imageStr:String=Base64.toString();//输出为字符串 
?

二:字符转图片

过程:String>Base64>ByteArray>Bitmap>DisplayObject

还原时,先使用Base64Decoder转为Base64编码的ByteArray,再用Loader对象来读取为Bitmap,完成还原过程.

    var spr:Sprite=new Sprite;   
    var Base64:Base64Decoder=new Base64Decoder;   
    Base64.decode(imageStr);//读取字符串   
    var bytes:ByteArray=Base64.toByteArray();//转化为ByteArray数据   
    var load:Loader=new Loader();   
    load.loadBytes(bytes);//读取ByteArray   
    load.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);   
    function complete(event:Event):void {   
        var bitMap:Bitmap=event.target.content as Bitmap;//读取Bitmap   
        spr.addChild(bitMap);   
    }  
?
  相关解决方案