2012-06-14 3 views
0

내 swf에서 스테이지의 라이브 스크린 샷을 만드는 코드가 있습니다. 그 후 jpeg로 저장됩니다. 문제 없다.BitmapData에서 jpeg 스크린 샷으로 플래시 AS3 copyPixels

X, Y : 357,341 widt, 높이 : 319,483

내 코드는 다음과 같습니다 ..

만, 나는 전체 단계가 필요하지 않습니다, 난 단지 컷 아웃이 필요

어디에서 어떻게 copypixels 함수를 삽입합니까?

는 (나는이 도움이 될 플래시 초보자, 그래서

function mouseReleaseSave(event:MouseEvent):void { 
import com.adobe.images.JPGEncoder; 
import flash.events.Event; 
import flash.net.URLLoader; 
import flash.net.URLRequestHeader; 
import flash.net.URLRequest; 

var jpgSource:BitmapData = new BitmapData(this.stage.stageWidth, this.stage.stageHeight); 
jpgSource.draw(this.stage); 
var jpgEncoder:JPGEncoder = new JPGEncoder(70); 
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource); 

//set the request's header,method and data 
var header:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream"); 
var loader:URLLoader = new URLLoader(); 
//sends jpg bytes to saveJPG.php script 
var myRequest:URLRequest = new URLRequest("saveJPG.php"); 
myRequest.requestHeaders.push(header); 
myRequest.method = URLRequestMethod.POST; 
myRequest.data = jpgStream; 
loader.load(myRequest); 
//fire complete event; 
loader.addEventListener(Event.COMPLETE,saved); 
function saved(e:Event){ 
    //trace the image file name 
    trace(loader.data); 
} 

}

답변

1

:-) 나를 쉽게 이동합니다

var subArea:Rectangle = new Rectangle(0,0, 319,483); 
var newBmp:Bitmap = new BitmapData(319,483); 
var cutoutBmp:Bitmap = new Bitmap(newBmp, PixelSnapping.ALWAYS, true); 
cutoutBmp.bitmapData.draw(jpgSource, new Matrix(1, 0, 0, 1, -357, -341) , null, null, subArea, true); 
+0

는 protozoo에서 답을 사용하려고 할 때 , "1067 : flash.display 유형의 값에 대한 암시 적 강제 변환 : 관련없는 유형의 Flash.display : Bitmap에 BitmapData." - 내가 놓친 게 있니? – Engberg