0

我有 2 个像这样的 SWFLoaders:

<mx:SWFLoader width="10" height="10" complete="imageLoaded()" id="ldr_src" source="img.jpg" scaleContent="true"/>
<mx:SWFLoader id="ldr_target" scaleContent="true"/>

private function imageLoaded():void{
     var bm:Bitmap = new Bitmap(ImageSnapshot.captureBitmapData(ldr_src);
     ldr_target.source = bm;
}

这里的一切都按预期工作,除了一件小事:

我在 ldr_src(即 10x10)中加载大小为 100x100 的图像。位图复制到 ldr_target 中,但结果出乎意料。我原以为会复制 10x10 大小的加载图像。而是将加载图像的 (0,0) 到 (10,10) 的位图复制到目标。

无论图像的实际大小如何,如何复制被 swfLoader 缩小的大小的 bitmapData?

4

3 回答 3

2

传递image.contentinto ImageSnapshot.captureBitmapData,然后确保 ldr_target 的宽度/高度设置为等于 src:

<mx:SWFLoader width="10" height="10" complete="imageLoaded()" id="ldr_src" source="img.jpg" scaleContent="true"/>
<mx:SWFLoader width="10" height="10" id="ldr_target" scaleContent="true"/>

private function imageLoaded():void
{
    var bm:Bitmap = new Bitmap(ImageSnapshot.captureBitmapData(ldr_src.content));
    ldr_target.source = bm;
}         

于 2010-02-16T04:11:48.030 回答
0

您还可以使用 BitmapData.draw 方法获取实现 IBitmapDrawable 的 DisplayObject 的快照

于 2010-09-17T16:17:29.403 回答
0

我试图做类似的事情,但使用视频源而不是图像。像魅力一样工作,谢谢。(出于某种原因,“ImageSnapshot”类在 Adob​​e 是一个非常保守的秘密。)

于 2010-07-01T02:06:31.080 回答