BitmapData 与 ByteArray 互相转换

来源:互联网 发布:mac os cdr镜像下载 编辑:程序博客网 时间:2024/05/01 16:05

 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 不知是哪里的一个对象.原创也没有贴出来,希望有知道的朋友贴在下面.

原创粉丝点击