2010-01-28 4 views
0
  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 разных зрителя.Flex/ActionScript снимок

+0

аналогичный вопрос с полезным ответом: HTTP: //stackoverflow.com/questions/2160353/flex-actionscript-snapshot-with-clipping-rectangle-and-scaling-matrix – dharm0us

ответ

0

Чтобы продлить ответ Amarghosh, посмотрите конструктору 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"); 
2

Метод constructor of the ImageSnapshot принимает в качестве первых двух аргументов ширину и высоту. Вы передаете нули. Измените их на их фактические значения.

var snapshot:ImageSnapshot = new ImageSnapshot(bmd.width, bmd.height, 
     bmd.getPixels(bounds)); 
+0

Похоже, что это была не оригинальная проблема (поскольку они сначала пытались использовать ImageSnapshot.captureImage), но это безусловно, остановит их сейчас. –

+0

та же проблема :( – dharm0us

+0

@Michael, ImageSnapshot.captureImage работает отлично. Я использовал captureBitmapData, так как я хотел позже использовать отсекающий прямоугольник и матрицу масштабирования. – dharm0us

Смежные вопросы