Как скопировать Pixels () на AS3 из огромного BitmapData? - PullRequest
2 голосов
/ 05 сентября 2010

Мне нужно загрузить очень большое изображение на AS3 (в настоящее время размером 8192x8192). Мне известно, что оно не соответствует ни одному из ограничений, накладываемых Flash для рисования на экран или создания BitmapData такого размера. Я просто хочу загрузить изображение, чтобы я мог скопировать Pixels () некоторые его части здесь и там.

Дело в том, что я загружаю файл .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 "Invalid BitmapData", обычно зарезервированная для BitmapDatas, которые слишком велики. Ошибка также происходит, если я пытаюсь сделать copyPixels (), что мне и нужно.

Есть ли какое-нибудь решение, которое я могу использовать, чтобы получить данные из такого большого изображения на AS3?

Ответы [ 2 ]

2 голосов
/ 05 сентября 2010

К сожалению, нет способа сделать это с AS3 / FlashPlayer, используя стандартные классы BitMap.

Однако вы можете попробовать JPEG Decoder bytearray.org, чтобы прочитать файл как необработанный ByteArray, а затем определить пиксели, которые вы используете.требуют, как это.- Я не могу гарантировать, что он будет работать с изображением 8192x8192px, но стоит попробовать, так как он не зависит от системы отображения Flash.

Если вы используете этот метод, помните, что пиксели хранятся в одном векторе , поэтому вам нужносделать что-то вроде:

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

Чтобы получить нужный пиксель.

0 голосов
/ 04 марта 2017

Начиная с AIR 3 и Flash Player 11, ограничения на размер объекта BitmapData были удалены Максимальный размер растрового изображения теперь зависит от операционной системы.

Источник

...