flash player 10 에서 비트맵 데이터는 8192 픽셀을 넘을 수 없습니다...

그런데 어쩌다보면 그 이상의 이미지를 사용해야 하는 경우도 생기지요

그럼 노가다로 일일히 자르는 작업을 하게 되는데, 그러지 않기 위해 만든 코드입니다...




우선 첨부한 클래스와 다음의 링크에서도 코드를 다운 받아주시고요

http://code.google.com/p/as3-jpeg-decoder/

첨부한 클래스는 제가 작성한 거지만, 위의 구글 코드는 저와 관련이 없습니다... 알케미를 이용한 듯 싶기도 한데... 정확히는 뒤져보질 않아서리...


원리를 설명하자면 제 코드에서 바이너리 형식으로 jpg를 부르고 jpg 디코더로 디코딩을 하여 픽셀값을 가지고 있게 되고 다시 제코드로 넘어와 원하는 영역(Rectangle) BitmapData 를 사용할 수 있게 해놨습니다

각각 영역을 가져와 한 컨테이너에 여러개로 넣어서 원래 이미지 대로 사용하던가, 특정 영역만 불러와서 그대로 사용하셔도 됩니다



이건 2만 픽셀 넘는 이미지를 컨트럴 해야 하는 팀원에게 이런식으로 짜면 된다를 보여주기 위한 교육용 코드입니다. 그렇기 때문에 테스트는 전혀 되있지 않습니다.


혹시라도 안된다고... 아니면 잘 모르겠다 더 자세히 설명해달라고 해봤자 가볍게 무시할 뿐입니다...



대충 사용법은 다음과 같습니다. 몇몇 인수들이 뭘 의미할 지는 코드 보면서 이해해보세요...





var loader:BigJPGLoader = new BigJPGLoader();

loader.addEventListener(Event.COMPLETE, complete);

loader.load(new URLRequest("jpg 경로"));



function complete(e:Event)

{

var bd:BitmapData = loader.getBitmapData(new Rectangle(9000, 9000, 100, 100));

addChild(new Bitmap(bd));

}







p.s. 이미지가 너무크면 파싱순간 버벅거리는건 저로서는 어쩔 수 없습니다요




Posted by 미나토

댓글을 달아 주세요