查看文章
 
FLASH生成图片
2008-02-20 17:06

http://bbs.blueidea.com/thread-2697271-1-1.html
http://bbs.blueidea.com/thread-2700451-1-1.html
一步步调高保存速度,不过真要做这样项目,还是AS3速度快,不过提高你代码执行效率的方法可以参考下
2.22更新内容:
1、大家如何想真正清楚如何生成图片的话还是把论坛里的讨论贴看完,和自己动手制作下就清楚了。
2、使用AS.2制作保存图片项目的朋友,推荐使用BitmapExporter Class v2.2 可以在http://www.quasimondo.com/网站下载的到。 PHP 和as2生成图片,可提供下载,下载结束还可以设置是否保存于服务器。可能说功能很强大
3、如果你不习惯用PHP,只会AS2可以使用 FMS2 生成 Bmp 呵呵,如果你看了论坛内容,对于传输数据大小,你应该知道如何做了. 没地方上传资料 大家可以搜索 FMS 读写 BMP应该可以找的到

————————————————————

import flash.display.BitmapData;
var myBitmap:BitmapData = new BitmapData(400, 300, true, 0x00ffffff);
myBitmap.draw(_root);
b.attachBitmap(myBitmap, 10);
//
var data:String = "[bitmap width=400 height=300 sendBy=Flash Encode=UTF-8 ]";
var width = myBitmap.width;
var height = myBitmap.height;
for (var i = 1; i<height; i++) {
     for (var j = 1; j<width; j++) {
         var num = myBitmap.getPixel(i, j);
         data += String.fromCharCode(num);
     }
}

——————————————————————
取得RGB分量信息了

         var num = myBitmap.getPixel(i, j).toString(16);
         var R = num.slice(0, 2);
         var G = num.slice(2, 4);
         var B = num.slice(4, 6);
如下效率高:
        var color = myBitmap.getPixel(i, j);
         var R = Math.floor(color/65536);
         var G = Math.floor(color%65536/256);
         var B = color%256;

         var color = myBitmap.getPixel(i, j);
         var B = color%256;
         var G = ((color-B)/256)%256;
         var R = (color-B-G*256)/256/256;
————————————————————————
最后最快的是下面这个办法
import flash.display.BitmapData;

var charCode:Array = new Array ();
for (var i = 0; i<256*256; i++)
{
charCode.push (String.fromCharCode (i));
}
var bmd:BitmapData = new BitmapData (300, 300, false, 0x00000000);
bmd.draw (pic);
var string = new String ();

function GP ():Void
{
var w:Number = bmd.width;
var h:Number = bmd.height;
var i:Number = 0;
var j:Number = w*h;
var mybmd:BitmapData = bmd;
var NB:Number = new Number ();
var mystring = new String ();
for (i=0; i<j; i++)
{
   var k:Number = i%w;
   var color:Number = mybmd.getPixel (k, (i-k)/w);

   var B = color%256;
   var tmp = (color-B)/256;
   var G = tmp%256;
   var R = (tmp-G)/256;

   if (i%2 == 0)
   {
      mystring += charCode[R*256+G];
      NB = B;
   }
   else
   {
      mystring += charCode[NB*256+R] + charCode[G*256+B];
      NB = null;
   }
}
if (NB != null) {
   mystring += charCode[NB*256]
}
string = mystring;
mybmd.dispose ();
delete mystring;
delete mybmd;
delete color;
}
var t0 = getTimer ();
GP ();
trace (getTimer ()-t0);


类别:分享||添加到搜藏 |分享到i贴吧|浏览(2822)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu