2010-09-05 124 views
2

我需要在AS3上加載一個非常大的圖像(目前大小爲8192x8192)。我知道它不符合Flash對繪製或創建該尺寸的BitmapData所施加的任何限制。我只是想加載圖像,所以我可以copyPixels()的一些部分在這裏和那裏。如何從一個巨大的BitmapData複製AS3上的像素()?

事情是,我正在加載該大小的.jpg文件沒有問題。大小可以從我的Loader對象中正確識別。我加載它是這樣的:

mImageLoader = new Loader(); 
var anImageURLRequest:URLRequest = new URLRequest("8192x8192.jpg"); 
mImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
mImageLoader.load(anImageURLRequest); 

然後,在的onComplete方法,我嘗試這樣做:

Bitmap(mImageLoader.content).bitmapData.getPixel(1000, 1000); 

但我與#2015「無效的BitmapData」錯誤通常保留的BitmapData迎接那太大了。如果我嘗試執行copyPixels(),這也是我所需要做的。

是否有任何解決方法我可以使用,所以我可以從AS3上的這個大圖像獲取數據?

回答

2

不幸的是,沒有辦法使用標準的BitMap類與AS3/FlashPlayer做到這一點。

但是,您可以嘗試bytearray.org的JPEG解碼器將該文件讀取爲原始ByteArray,然後確定像這樣需要的像素。 - 我不能保證它可以和8192x8192px圖片一起工作,但值得一試,因爲它不依賴於Flash顯示系統。

如果你使用這種方法,記住像素存儲在一個單一的矢量所以你需要做的是這樣:

var pixel:int = pixels[ (width * y) + x ]; 

要獲得你想要的像素。

+0

謝謝,我打算試試看。 – JohnWithoutArms 2010-09-05 04:40:42

0

從AIR 3和Flash Player 11開始,BitmapData對象的大小限制已被刪除。位圖的最大大小現在取決於操作系統。

Source