Flash as3平滑阈值

时间:2010-04-24 09:03:22

标签: flash actionscript

我正在构建一个Flash应用程序,可以从flickr中提取图像并删除白色背景 我正在使用阈值,我得到一个非常粗糙的结果 有没有办法获得更好,更顺畅的颜色键? 谢谢 photoNumber = Math.floor(Math.random() * (photos.length));

    loader.load(new URLRequest(photos[photoNumber].path));
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,draw);
    trace ( "trying to load photo " + photoNumber );

    function draw(e:Event) {

    trace ("show photo " + photoNumber)

var W:int=e.target.content.width;
var H:int=e.target.content.height;

bitmapdata=new BitmapData(W,H);
bitmap=new Bitmap(bitmapdata);
bitmapdata.draw(e.target.content);

    var threshold:uint =  0xF9F8F800;
    var color:uint = 0x00000000;
    var maskColor:uint = 0x00FF0000;

bitmapdata.threshold(bitmapdata,new Rectangle(0,0,W,H),new Point(0,0),">", threshold, color, maskColor, true);

    bitmap.smoothing = true;
    //bitmap.scaleX = bitmap.scaleY = 0.99; // <----
    imgHolder.addChild(bitmap);

    }

loader.load(new URLRequest(photos[photoNumber].path)); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,draw); trace ( "trying to load photo " + photoNumber ); function draw(e:Event) { trace ("show photo " + photoNumber) var W:int=e.target.content.width; var H:int=e.target.content.height; bitmapdata=new BitmapData(W,H); bitmap=new Bitmap(bitmapdata); bitmapdata.draw(e.target.content); var threshold:uint = 0xF9F8F800; var color:uint = 0x00000000; var maskColor:uint = 0x00FF0000; bitmapdata.threshold(bitmapdata,new Rectangle(0,0,W,H),new Point(0,0),">", threshold, color, maskColor, true); bitmap.smoothing = true; //bitmap.scaleX = bitmap.scaleY = 0.99; // <---- imgHolder.addChild(bitmap); }

2 个答案:

答案 0 :(得分:2)

您的面具和阈值不正确。我想你正试图做这样的事情:

var threshold:uint =  0x00F9F8F8;
var maskColor:uint = 0x00FFFFFF;

alpha是前两个十六进制字符。

答案 1 :(得分:0)

如果您只想删除白色像素,可以将图像与相同大小的白色位图进行比较,并更改匹配的像素(请参阅:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/BitmapData.html#compare%28%29)。