2

我需要在 AS3 上加载一个非常大的图像(当前大小为 8192x8192)。我知道它不符合 Flash 对屏幕绘图或创建该大小的 BitmapData 施加的任何限制。我只想加载图像,这样我就可以在这里和那里复制像素()它的某些部分。

问题是,我正在毫无问题地加载该大小的 .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);

但是我收到了通常为太大的 BitmapDatas 保留的 #2015“Invalid BitmapData”错误。如果我尝试执行 copyPixels(),也会发生错误,这是我需要做的。

我可以使用任何解决方法,以便我可以从 AS3 上这么大的图像中获取数据吗?

4

2 回答 2

2

不幸的是,AS3/FlashPlayer 无法使用标准的 BitMap 类来做到这一点。

但是,您可以尝试使用 bytearray.org 的 JPEG 解码器将文件作为原始 ByteArray 读取,然后像这样确定您需要的像素。- 我不能保证它适用于 8192x8192px 图像,但值得一试,因为它不依赖于 Flash 显示系统。

如果您确实使用此方法,请记住像素存储在单个Vector中,因此您需要执行以下操作:

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

得到你想要的像素。

于 2010-09-05T04:24:45.707 回答
0

从 AIR 3 和 Flash Player 11 开始,已删除 BitmapData 对象的大小限制。位图的最大尺寸现在取决于操作系统。

资源

于 2017-03-03T22:31:17.530 回答