2013-05-08 6 views
2

큰 JPEG 이미지 파일이 있습니다. 크기는 19000 * 14000이고 파일 크기는 약 41M입니다. AIR 3.3 SDK를 사용하고 있지만로드가 완료된 후 스테이지에서 이미지를 볼 수 없습니다. 누구든지이 문제의 원인을 알고 있습니까?로드 한 후 매우 큰 이미지를 표시 할 수 없습니다.

protected function button1_clickHandler(event:MouseEvent):void 
{ 
    file = new File(); 
    file.addEventListener(Event.SELECT, imageFileHandler); 
    file.browseForOpen("image file", [new FileFilter("image file","*.jpg;*.jpeg")]); 
} 

protected function imageFileHandler(event:Event):void 
{ 
    fs = new FileStream(); 
    fs.openAsync(file, FileMode.READ); 
    fs.addEventListener(Event.COMPLETE, bytesComplete); 
} 

protected function bytesComplete(event:Event):void 
{ 
    loader = new Loader(); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoadHandler); 
    var bytes:ByteArray = new ByteArray(); 
    fs.readBytes(bytes); 
    loader.loadBytes(bytes); 
    fs.close(); 
} 

protected function imageLoadHandler(event:Event):void 
{ 
    image.source = (loader.content as Bitmap).bitmapData; 
} 

답변

1

플래시 플레이어와 공기 표시 할 이미지 파일 크기에 대한 제한이 있습니다

여기 내 코드입니다. 내가 기억한다면 4096 * 4096. 거대한 이미지를 사용하려면 더 많은 작은 이미지로 슬라이스하고, 이미지를 개별적으로로드 한 다음 하나씩 배치하십시오. 마치 지구 전체를로드하는 Google지도를 원합니다. 보이는 부분 만로드합니다. 너는 그것도 고려해야한다.

비트 맵 데이터 나 이미지를 볼 수 있도록하는 스프라이트 중 하나의 크기를 조정할 수도 있습니다.

+0

16777216 픽셀, 8192 단일 차원, 더 정확합니다. – Vesper

+0

어도비의 [documentation] (http://help.adobe.com/ko_KR/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html)로 인해 3 일 이후에는 이미지 크기가 더 이상 제한되지 않습니다. . –

+1

여전히 한계가 있습니다. 링크에서 인용 : AIR 3 및 Flash Player 11부터 BitmapData 객체의 크기 제한이 제거되었습니다. ** 비트 맵의 ​​최대 크기는 이제 운영 체제에 따라 다릅니다. ** – csomakk

1

무대가 실제 이미지보다 작을 것입니다. 스테이지만큼 큰 bitmapData를 만듭니다. BitmapData의 copyPixels를 사용하여 픽셀을 큰 것으로부터 작은 것으로 복사합니다 (물론 x와 y 위치의 데칼을 지정할 수 있습니다).

copyPixels가 사용되기 전에 bitmapData.lock()을 수행하고 이후에 unlock()을 수행해야합니다. 이것들은 쓸모없는 업데이트를 방지하여 속도를 저하시키고 충돌을 일으킬 수 있습니다. copyPixels는 "뚱뚱한"방법입니다. D

이렇게하면 조각으로 나눌 필요가 없습니다. enterframe 또는 mousemove에이 업데이트를 추가 할 수 있습니다.