我试图让用户将巨型图像导入 Flash 应用程序。
不幸的是,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);
}