BitmapData 与 ByteArray 互相转换

 package com.klstudio.images
{
 import flash.display.BitmapData;
 import flash.geom.Rectangle;
 import flash.utils.ByteArray;
 
 public class BitmapBytes
 {
      public static function encodeByteArray(data:BitmapData):ByteArray{ 
            if(data == null){ 
                throw new Error("data参数不能为空!"); 
            } 
            var bytes:ByteArray = data.getPixels(data.rect); 
            bytes.writeShort(data.width); 
            bytes.writeShort(data.height); 
            bytes.writeBoolean(data.transparent); 
            bytes.compress(); 
            return bytes; 
        } 
//        public static function encodeBase64(data:BitmapData):String{ 
//            return Base64.encodeByteArray(encodeByteArray(data)); 
//        } 
         
        public static function decodeByteArray(bytes:ByteArray):BitmapData{ 
            if(bytes == null){ 
                throw new Error("bytes参数不能为空!"); 
            } 
            bytes.uncompress(); 
            if(bytes.length <  6){ 
                throw new Error("bytes参数为无效值!"); 
            }            
            bytes.position = bytes.length - 1; 
            var transparent:Boolean = bytes.readBoolean(); 
            bytes.position = bytes.length - 3; 
            var height:int = bytes.readShort(); 
            bytes.position = bytes.length - 5; 
            var width:int = bytes.readShort(); 
            bytes.position = 0; 
            var datas:ByteArray = new ByteArray();           
            bytes.readBytes(datas,0,bytes.length - 5); 
            var bmp:BitmapData = new BitmapData(width,height,transparent,0); 
            bmp.setPixels(new Rectangle(0,0,width,height),datas); 
            return bmp; 
        } 
         
//        public static function decodeBase64(data:String):BitmapData{             
//            return decodeByteArray(Base64.decodeToByteArray(data)); 
//        }        
         
        public function BitmapBytes() { 
            throw new Error("BitmapBytes类只是一个静态类!"); 
        } 
 }
}

 

 

//注释的部分是在我这里编译没有通过,Base64 不知是哪里的一个对象.原创也没有贴出来,希望有知道的朋友贴在下面.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值