[ActionScript] 서버로부터 이미지를 받아 BitmapData 타입으로 얻기

글 제목이.. 테크니컬합니다만.. Flex에서 서버에 위치한 이미지 파일을 다운로드 받아서.. 받은 이미지를 지지고 볶기 위해 BitmapData라는 타입으로 변환하고자 할때 사용하는 코드입니다.

이미지가 서버에 있으므로 URL로 경로를 지정할 수 있겠지요?  아래가 이미지에 대한 URL을 통해 다운로드 작업의 시동을 걸어 주는 코드입니다.

var ldr:Loader = new Loader();
var req:URLRequest = new URLRequest("http://www.gisdeveloper.co.kr/img/downskin.png");

ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onRequestComplete);
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onRequestError);

ldr.load(req);

4번과 5번 코드는 다운로드가 성공적으로.. 때로는 문제가 생겨 실패했을시 발생하는 이벤트를 지정해주는 코드입니다. 성공적으로 받았을때 받은 데이터를 BitmapData 타입으로 변환하는 코드가 존재할텐데요.. 그렇다면 성공적으로 다운로드 되었을때 발생하는 이벤트에 대한 코드를 살펴면 다음과 같습니다.

private function onRequestComplete(event:Event):void
{
    var ldr:Loader = event.target.loader as Loader;
    var img:Bitmap = ldr.content as Bitmap;
    
    trace(img.bitmapData.width, img.bitmapData.height);
}

6번째 코드를 통해 다운로드 받은 이미지의 크기를 플래시 빌더의 디버깅 창에 표시해 보고 있습니다.

끝으로… 플래시는 모든 연산이 비동기화 지향적입니다. 플래시가 화면상에 화려하고 역동적인 그래픽 요소의 표현이라는 주요 목적을 갖고 있으니 당연한 것이긴 하지만…… 때론 이런 비동기적인 방식이 코드를 복잡하게 만들때가 있습니다.. 위의 경우에서도 이미지 하나를 받기 위해 비동기방식으로 이벤트를 지정해줘서 처리를 하고 있는데… 이를 동기적으로 처리할 수 있는 방법이 있다면 좋겠다는 생각이 듭니다만… 혹.. 아시는 분 계시나요?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다