Существует более одного решения, но вы можете попробовать одно из них (и объединить):
сделать снимок экрана с меньшим разрешением (масштабирование, см. Ниже)
преобразовать ваши BitmapData в ByteArray (через BitmapData.getPixels ()) и вызвать ByteArray.compress () (сжатие без потерь)
сжимать изображение в JPEGByteArray и определение соотношения качества в зависимости от количества захваченных снимков, его разрешения и доступного места в памяти (я не уверен, что вы можете знать, последний) - думаю, это один из лучших способов
Сделать полный размер для первого и для остальных, захватывать только изменения и положение (см., Как работает функция отладчика FlashPlayer «Показать область перерисовки»)
если вы работаете с приложением Air, сохраните BitmapData во временных файлах
, если это возможно, попросите пользователя разблокировать большой объем пространства для LocalSharedObject и записать свои данные внутри
Здесь пример кода для захвата с масштабным соотношением (например: 100x200 DispObj -> 50x100 BitmapData)
var displayObject:DisplayObject;
var scale:Number = 0.5;
var bounds:Rectangle = displayObject.getBounds(displayObject);
var bitmapData:BitmapData = new BitmapData(uint((bounds.width + 0.5) * scale), uint((bounds.height + 0.5) * scale), true, 0);
bitmapData.draw(displayObject, new Matrix(scale, 0, 0, scale, -bounds.x * scale, -bounds.y * scale));