2012-05-20 1 views
0

현재 사용자가 콘텐츠를 그릴 수있는 스케치 패드로 구성된 플래시 (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); 
} 
?> 
+0

name = drawing.jpg이 이름은 서버에 이미지를 저장하는 데 사용하는 이름입니까? 그렇다면 마지막 이미지를 덮어 씁니다. – Larusso

답변

0

http://code.google.com/p/in-spirit/wiki/MultipartURLLoader

주의하십시오. 그것은 하나의 요청 당 여러 이미지를 업로드 할 수 있습니다.

===============

사용법 :

http://blog.inspirit.ru/?p=139

+0

감사합니다. 테스트 파일과 .as 클래스를 다운로드했지만 테스트 프로젝트가 작동하지 않는 것 같습니다. 어떻게하면이 클래스를 내 코드에 통합 할 수 있을지 알 수 있습니까? 다시 한번, 많은 감사합니다. –

0

한 가지는 마지막 for 문에는 잠금 브래킷 } 없다는 것입니다. 이것은 복사 - 붙여 넣기 실수입니까? 이 링크에

+0

@Larusso에는 요점이 있습니다. 보십시오 :''imageprocess.php? name = drawing_ "+ i +".jpg "' – lincolnberryiii

+0

대단한 캐치 (당신 덕분에 @larusso). 귀하의 제안에 따라 해당 라인을 조정했지만 최종 결과는 여전히 동일합니다. "image process.php"코드는 한 번만 액세스되며 마지막 스크린 샷 만 저장됩니다. 이것이 내 PHP 코드에 문제가 될 수 있습니까? 그렇다면 게시 해 드리겠습니다. 도와 주셔서 대단히 감사드립니다. 정말 고맙습니다! –

+0

위의 PHP 코드를 참조 용으로 게시했습니다. time() 스탬프에 따라 각 이미지의 이름을 조정했지만 여전히 운이 없다. –

0

당신이 요청 이후 지금 오래 전에 비록 : 그냥 초기 값을 변경 0에서 이브까지

관련 문제