Trying to capture stage area using BitmapData

早过忘川 提交于 2019-11-28 04:47:58

问题


I am trying to grab part of stage area using BitmapData and copyPixels method:

bmd = new BitmapData(stage.stageWidth, stage.stageHeight);

bmdRect = new BitmapData(320, 240);

rectangle = new Rectangle(360, 20, 320, 240); 

bmdRect.copyPixels(bmd, rectangle, new Point());

bmd.draw(bmp);
bmp = new Bitmap(bmdRect);   

var myEncoder:JPGEncoder = new JPGEncoder(100);
var byteArray:ByteArray = myEncoder.encode(bmd);

The result i get is an empty .jpg I m pretty sure that the error is in the Bitmap procedure and not the saving one...


回答1:


Finally used this solution to copy part of the stage

(I copied everything that is on stage from (360, 20) and after)

var bitmapdata:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);

bitmapdata.draw(stage);

var bitmapDataA: BitmapData = new BitmapData(300, 250);

bitmapDataA.copyPixels(bitmapdata, new Rectangle(360, 20, 320, 240), new Point(0, 0));

var myEncoder:JPGEncoder = new JPGEncoder(90);

var byteArray:ByteArray = myEncoder.encode(bitmapDataA);



回答2:


Can't you just call bmd.draw(stage)?




回答3:


  var stage_snapshot:BitmapData = new BitmapData(600, 120);

  var myRectangle:Rectangle = new Rectangle(0, 0, 600, 120);


  var myMatrix:Matrix = new Matrix();

  var translateMatrix:Matrix = new Matrix();

  translateMatrix.translate(-100, -225);

  myMatrix.concat(translateMatrix);

  stage_snapshot.draw(stage,myMatrix,null,null,myRectangle);

  var encoded_jpg:JPGEncoder = new JPGEncoder(100);

  var jpg_binary:ByteArray = new ByteArray();

  jpg_binary = encoded_jpg.encode(stage_snapshot);


来源:https://stackoverflow.com/questions/2450381/trying-to-capture-stage-area-using-bitmapdata

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!