论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

BitmapBytes类-实现BitmapData与ByteArray(Base64)之间互转功能

文章类别:Flash AS编程 | 发表日期:2008-10-6 18:37:17


[AS3]BitmapBytes类-实现BitmapData与ByteArray(Base64)之间互转功能
【组件版本】:0.5
【功能简述】:实现BitmapData与ByteArray(Base64)之间互转功能。
【运行平台】:Flash CS3,ActionScript3,Flash Player 9 +
【类包路径】: com.klstudio.images.BitmapBytes
【方法说明】:
  1. /**  
  2. * @link http://www.klstudio.com  
  3. * @author Kinglong  
  4. * @version 0.5  
  5. */  
  6.   
  7. package com.klstudio.images {   
  8.   
  9.     import flash.display.BitmapData;   
  10.     import flash.geom.Rectangle;   
  11.     import flash.utils.ByteArray;   
  12.        
  13.     import com.klstudio.util.Base64;   
  14.        
  15.     public class BitmapBytes {   
  16.            
  17.         public static function encodeByteArray(data:BitmapData):ByteArray{   
  18.             if(data == null){   
  19.                 throw new Error("data参数不能为空!");   
  20.             }   
  21.             var bytes:ByteArray = data.getPixels(data.rect);   
  22.             bytes.writeShort(data.width);   
  23.             bytes.writeShort(data.height);   
  24.             bytes.writeBoolean(data.transparent);   
  25.             bytes.compress();   
  26.             return bytes;   
  27.         }   
  28.         public static function encodeBase64(data:BitmapData):String{   
  29.             return Base64.encodeByteArray(encodeByteArray(data));   
  30.         }   
  31.            
  32.         public static function decodeByteArray(bytes:ByteArray):BitmapData{   
  33.             if(bytes == null){   
  34.                 throw new Error("bytes参数不能为空!");   
  35.             }   
  36.             bytes.uncompress();   
  37.             if(bytes.length <  6){   
  38.                 throw new Error("bytes参数为无效值!");   
  39.             }              
  40.             bytes.position = bytes.length - 1;   
  41.             var transparent:Boolean = bytes.readBoolean();   
  42.             bytes.position = bytes.length - 3;   
  43.             var height:int = bytes.readShort();   
  44.             bytes.position = bytes.length - 5;   
  45.             var width:int = bytes.readShort();   
  46.             bytes.position = 0;   
  47.             var datas:ByteArray = new ByteArray();             
  48.             bytes.readBytes(datas,0,bytes.length - 5);   
  49.             var bmp:BitmapData = new BitmapData(width,height,transparent,0);   
  50.             bmp.setPixels(new Rectangle(0,0,width,height),datas);   
  51.             return bmp;   
  52.         }   
  53.            
  54.         public static function decodeBase64(data:String):BitmapData{               
  55.             return decodeByteArray(Base64.decodeToByteArray(data));   
  56.         }          
  57.            
  58.         public function BitmapBytes() {   
  59.             throw new Error("BitmapBytes类只是一个静态类!");   
  60.         }   
  61.            
  62.     }   
  63.        
  64. }   

【打包文件】:http://www.klstudio.com/demo/mxp/BitmapBytes.mxp

P.S.此转换类是有很多实用价值,我可以简单一例:你可以把常用的位图进行通过encodeBase64方法生成Base64编码字符串,作为程序的常量存储下来,如果使用的话,只需将字符串常量再通过decodeBase64还原成BitmapData位图对象就可以了!此图片存储数据的方式要比我以前写的“ IconDataManager-图标数据管理类”里面提及的图片数据压缩要更为实用和方便。至于其他应用,就有待你的发现了。
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058