Снимок Flex / actionscript - PullRequest
       10

Снимок Flex / actionscript

0 голосов
/ 28 января 2010
         var bmd:BitmapData = ImageSnapshot.captureBitmapData(someSprite);
         trace("bmd size "+getSize(bmd));
         var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height);
     var snapshot:ImageSnapshot = new ImageSnapshot(0,0,bmd.getPixels(bounds));

         //var snapshot:ImageSnapshot = ImageSnapshot.captureImage(someSprite);
     var file:FileReference = new FileReference();
     file.save(snapshot.data,'abc.png');

В приведенном выше коде после сохранения файла, когда Я пытаюсь открыть его, я получаю «Это не правильный файл растрового изображения». Я пробовал 2-3 разных зрителей.

Ответы [ 2 ]

2 голосов
/ 28 января 2010

Конструктор метода ImageSnapshot принимает ширину и высоту в качестве первых двух аргументов. Вы проходите нули. Измените их на их действительные значения.

var snapshot:ImageSnapshot = new ImageSnapshot(bmd.width, bmd.height, 
        bmd.getPixels(bounds));
0 голосов
/ 29 января 2010

Чтобы расширить ответ Амаргоша, обратитесь к конструктору ImageSnapshot

ImageSnapshot(width:int, height:int, data:ByteArray, contentType:String)

Поле data не ожидает данные пикселей BitmapData (bmp.getPixels), оно ожидает данные, закодированные в данном contentType. Так что вы могли бы сделать:

var encoder:PNGEncoder = new PNGEncoder();
var bytes:ByteArray = encoder.encode(bmp);
new ImageSnapshot(width, height, bytes, encoder.contentType);

Как только вам все равно придется кодировать его самостоятельно, вам, вероятно, следует покончить со вторым справочником ImageSnapshot и использовать:

new FileReference().save(bytes, "abc.png");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...