如何平滑加载FileReference的图像?

时间:2010-03-12 00:16:51

标签: flex actionscript-3 actionscript bitmap

试图平滑加载FileReferece的图像,没有运气。以下是我正在使用的代码:

fileRef = new FileReference();
fileRef.addEventListener(Event.COMPLETE, fileLoaded);

private function fileLoaded(e:Event):void{
    var ldr:Loader = new Loader();             
    ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{
        var bm:Bitmap = Bitmap(e.target.content as Bitmap);
        bm.smoothing = true;
        img.load(bm)
    }); 
    ldr.loadBytes(fileRef.data);
}   

<custom:SWFLoaderAdvanced id="img"/>

bm.smoothing 应该对加载的图像进行平滑处理,但由于某种原因,它不会。我在这里错过了什么吗?

注意: SWFLoaderAdvanced 会自动平滑加载在其中的任何图像。除了加载了FileReference的图像之外,它与加载的图像完美配合。

2 个答案:

答案 0 :(得分:1)

我相信数据会以byteArray的形式加载到flash中,试试看看会发生什么。

你的话在这里:

var bm:Bitmap = Bitmap(e.target.content as Bitmap);

希望成为:

var bm:Bitmap = new Bitmap(e.target.content as BitmapData);

答案 1 :(得分:0)

我不确定为什么bm.smoothing不起作用,也许是这样,但效果几乎不可察觉。您可以尝试的一件事是BlurFilter

import flash.filters.BlurFilter;
var blur:BlurFilter = new BlurFilter(1, 1, 5);

第一个和第二个参数是blurXblurY,第三个参数是质量。我想你可以将它应用于Bitmap对象,可能使用这个函数:

bitmapDataObject.applyFilter();

该功能在AS3参考中进一步详述;我不是安装了Flash的电脑,所以我无法测试它是如何工作的。您肯定可以将模糊效果应用于Bitmap个对象,如果你做的是高质量的非常轻微的效果,它会使图像平滑。查看文档中的BlurFilterBitmapData

希望这有帮助!