Flex: копирование bitmapData загруженного изображения в другой SWFLoader - PullRequest
0 голосов
/ 16 февраля 2010

У меня есть 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;
}

Здесь все работает как положено, кроме одной маленькой мелочи:

Я загружаю изображение размером 100x100 в ldr_src (то есть 10x10). Растровое изображение копируется в ldr_target, но с неожиданными результатами. Я бы подумал, что размер загруженного изображения 10х10 будет скопирован. Вместо этого растровое изображение с (0,0) по (10,10) загруженного изображения копируется в цель.

Независимо от фактического размера изображения, как мне скопировать bitmapData того размера, который уменьшен с помощью swfLoader?

Ответы [ 3 ]

2 голосов
/ 16 февраля 2010

Передайте image.content в 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;
}         

Lance

0 голосов
/ 17 сентября 2010

Вы также можете использовать метод BitmapData.draw для получения снимка объекта DisplayObject, который реализует IBitmapDrawable

0 голосов
/ 01 июля 2010

Я пытался сделать что-то похожее, но с источником видео, а не с изображением. Работал как шарм, спасибо. (По какой-то причине класс «ImageSnapshot» - это действительно хорошо хранящийся секрет в Adobe.)

...