2

AS3に非常に大きな画像をロードする必要があります(現在のサイズは8192x8192)。画面への描画またはそのサイズのBitmapDataの作成に関して、Flashによって課せられた制限のいずれにも適合しないことを認識しています。画像をロードして、その一部をあちこちでcopyPixels()できるようにします。

問題は、そのサイズの.jpgファイルを問題なくロードしているということです。サイズはローダーオブジェクトから正しく認識されます。私はそれをこのようにロードします:

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);

しかし、通常は大きすぎるBitmapDataに対して予約されている#2015「InvalidBitmapData」エラーが表示されます。このエラーは、copyPixels()を実行しようとした場合にも発生します。これは、実行する必要があることです。

AS3でこれほど大きな画像からデータを取得できるようにするために使用できる回避策はありますか?

4

2 に答える 2

2

残念ながら、標準のBitMapクラスを使用してAS3/FlashPlayerでこれを行う方法はありません。

ただし、bytearray.orgのJPEGデコーダーを試して、ファイルを生のByteArrayとして読み取り、そのように必要なピクセルを決定することもできます。--8192x8192pxの画像で動作することを保証することはできませんが、Flashディスプレイシステムに依存していないため、試してみる価値があります。

この方法を使用する場合は、ピクセルが単一のベクターに格納されるため、次のような操作を行う必要があることに注意してください。

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

必要なピクセルを取得します。

于 2010-09-05T04:24:45.707 に答える
0

AIR3およびFlashPlayer11以降、BitmapDataオブジェクトのサイズ制限が削除されました。ビットマップの最大サイズは、オペレーティングシステムによって異なります。

ソース

于 2017-03-03T22:31:17.530 に答える