Как сохранить изображение большого компонента Flex (например, 25000 пикселей на 3000 пикселей на 72 точек на дюйм) - PullRequest
1 голос
/ 28 июля 2011

Мое приложение состоит из отображения пользователю большой пользовательской структуры в виде дерева, которая в конечном итоге может вырасти до огромных пропорций, таких как размеры, указанные в вопросе.Я разрешаю им экспортировать изображение со следующей строкой кода, привязанной к событию нажатия кнопки:

var image:ImageSnapshot = ImageSnapshot.captureImage(this, 72, new PNGEncoder(), false);

Мне удалось экспортировать изображения, близкие к указанным размерам, но там они начинают получать ошибкуПриведенное ниже сообщение после вращения в течение почти 15 секунд:

Error: Error #1000: The system is out of memory.
    at flash.utils::ByteArray/writeBytes()
    at mx.graphics::ImageSnapshot$/mergePixelRows()[E:\dev\4.x\frameworks\projects\framework\src\mx\graphics\ImageSnapshot.as:511]
    at mx.graphics::ImageSnapshot$/captureAll()[E:\dev\4.x\frameworks\projects\framework\src\mx\graphics\ImageSnapshot.as:482]
    at mx.graphics::ImageSnapshot$/captureImage()[E:\dev\4.x\frameworks\projects\framework\src\mx\graphics\ImageSnapshot.as:318]
    at vertical/saveChart()[C:\devel\workspace\vertical\src\CustomObject.mxml:501]
    at vertical/__saveImageBtn_click()[C:\devel\workspace\vertical\src\CustomObject.mxml:574]

Плагин flashplayer для моего браузера не хватает памяти?Я заметил, что в моем диспетчере задач он занимал до 1,2 ГБ памяти (в моей системе 4 ГБ).Если это так, то можно ли ограничить использование памяти для данной функции, такой как приведенный выше вызов ImageSnapshot.captureImage()?

. Может быть, есть способ сгенерировать компонент из 2 или 4 ImageSnapshot объектов и частей?они вместе потом?

Любой совет будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Если вы используете BitmapData, то имеет значение, на какой FlashPlayer вы нацеливаетесь:

версии VS максимальный битовый размер

flashplayer -9: 2880x2880 px
flashplayer 10: 4096x4096 px
flashplayer 11: неограниченно

Я не знаю, что именно вы пытаетесь сделать с этим огромным снимком, но я бы порекомендовал использовать плитки.Разбейте его на куски относительно небольших растровых изображений.Создайте их отдельно, чтобы вам не приходилось открывать / создавать этот огромный объем данных в вашей памяти.

В любом случае, было бы неплохо узнать, можно ли закодировать это изображение с большой задницей без ошибок Error #1000 out of memory.

1 голос
/ 28 июля 2011

Я полагаю, что в последней версии Flash Player 11 появилась новая функция для решения этой проблемы:

"Расширенная поддержка растровых изображений с высоким разрешением - объекты BitmapData больше не ограничены максимальным разрешением 16 мегапикселей (16 777 215 пикселей),максимальная ширина / высота растрового изображения больше не ограничена 8191 пикселем, что позволяет разрабатывать приложения, использующие очень большие растровые изображения ».с этого PDF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...