ユーザーが巨大な画像をフラッシュ アプリケーションにインポートできるようにしようとしています。
残念ながら、BitmapData オブジェクトのサイズは「幅または高さが 8,191 ピクセル、ピクセルの合計数が 16,777,215 ピクセルを超えることはできません」(参考文献を参照)
明らかに、FlashPlayer11 ではこれらの制限はなくなります。ただし、FileReference からバイトしか取得しないため、画像データにアクセスするには、Loader.loadBytes() を介してこれらを変換する必要があります。これは、古い BitmapData の制限を超える画像では機能しないようです。
この問題の原因/回避策を知っている人はいますか?
function onAddButtonClicked(e:MouseEvent = null):void {
trace("Opening file");
_frl = new FileReferenceList();
_frl.addEventListener(Event.SELECT, onFilesSelected);
_frl.browse([new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png")]);
}
//When user has selected the files
function onFilesSelected(e:Event):void {
for each (var item:FileReference in _frl.fileList) {
item.load();
item.addEventListener(Event.COMPLETE, onFileLoaded);
}
}
//When files are loaded into the application
function onFileLoaded(e:Event):void {
trace("File Loaded!");
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onBytesLoaded);
loader.loadBytes(e.target.data);
}
//When files are finally available as Loader/Image
function onBytesLoaded(e:Event):void {
addChild((e.target as LoaderInfo).loader);
}