현재 사용자가 콘텐츠를 그릴 수있는 스케치 패드로 구성된 플래시 (AS3) 프로젝트가 있습니다. 이 그림을 일련의 jpeg 스크린 샷으로 기록하고 도면 영역에서 "기록"및 "정지"버튼을 배치하고 싶습니다. 다음 코드를 얻으려면 아래 코드를 얻으려고합니다.AS3- 인코딩 및 내보내기 Flash에서 여러 jpegs
1) "기록"을 누르면 15 개의 스크린 샷 (비트 맵)을 캡처하여 최대 1 분 동안 "jpgSource"배열에 저장해야합니다.
2) "stop"을 누르면 화면 캡처 기능이 중지되고 jpgSource에 저장된 모든 비트 맵을 jpeg로 변환해야하며 모든 jpeg를 PHP 처리기로 내 보내야합니다.
현재이 코드를 실행하면 PHP 코드가 하나의 JPEG 이미지 (마지막으로 찍은 이미지) 만 뱉어냅니다. 누군가 내가 잘못 가고있는 것을 지적 할 수 있다면 정말 감사 할 것입니다.
편집 : NavigateToUrl은 프레임 당 한 번만 작동하여 계속 발생하는 오류를 설명합니다. 여기에서 (http://www.actionscript.org/forums/showthread.php3?t=250594)이 문제를 우회하는 데 타이머를 사용할 수는 있지만이 경우에 구현하는 방법을 잘 모르겠습니다. 나는 언제나처럼 어떤 충고에 대해서도 매우 감사 할 것입니다.
var sourceArray:Array = [];
var myTimer:Timer = new Timer(50,200);
myTimer.addEventListener(TimerEvent.TIMER, timerListener);
function timerListener (e:TimerEvent):void {
var jpgSource:BitmapData = new BitmapData (850, stage.height);
jpgSource.draw(stage);
sourceArray.push(jpgSource);
}
recordbutton.addEventListener(MouseEvent.CLICK, recordbuttonClick);
stopbutton.addEventListener(MouseEvent.CLICK, stopbuttonClick);
function recordbuttonClick(ev:MouseEvent):void
{
myTimer.start();
}
function stopbuttonClick(ev:MouseEvent):void
{
myTimer.stop();
var jpgEncoder:JPGEncoder = new JPGEncoder(50);
for (var i:Number=1; i<sourceArray.length; i++){
var jpgStream:ByteArray = jpgEncoder.encode(sourceArray[i]);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var jpgURLRequest:URLRequest = new URLRequest("imageprocess.php?name=drawing.jpg");
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;
navigateToURL(jpgURLRequest, "blank");
}
PHP : 바로 오프 손 발견
<?php
if (isset ($GLOBALS["HTTP_RAW_POST_DATA"]) && isset ($_GET['name'])) {
//the image file name
$fileName = time();
// get the binary stream
$im = $GLOBALS["HTTP_RAW_POST_DATA"];
//write it
$fp = fopen($fileName, 'wb');
fwrite($fp, $im);
fclose($fp);
}
?>
name = drawing.jpg이 이름은 서버에 이미지를 저장하는 데 사용하는 이름입니까? 그렇다면 마지막 이미지를 덮어 씁니다. – Larusso