BitmapData выделяет много памяти при создании - PullRequest
1 голос
/ 02 февраля 2012

У меня есть приложение, которое манипулирует изображениями с высоким разрешением (около 100 мегапикселей), и у меня возникают проблемы с памятью.Когда объект BitmapData создан, он выделяет память для хранения этого изображения.Проблема в том, что у меня уже есть ByteArray с пикселями этого изображения (которые имеют размер около 400+ МБ), поэтому при создании BitmapData он выделяет память для хранения тех же данных, что и у меня в ByteArray.1002 * После его создания я могу установить пиксели из ByteArray в BitmapData и освободить ByteArray.Но этот пик памяти иногда приводит к тому, что во время выполнения возникает исключение, говорящее о том, что системе не хватает памяти.

Можно ли как-то сказать BitmapData использовать мой собственный ByteArray?Или любое другое решение, которое мне не нужно использовать вдвое больше памяти, что мне нужно?

1 Ответ

1 голос
/ 01 апреля 2012

В случае, если кому-то это нужно, вот что я сделал:

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

...