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);