Как создавать большие растровые изображения с RenderTargetBitmap?
Мне нужно хранить большое визуальное изображение как растровое изображение, используя RenderTargetBitmap без получения исключения Out-Of-Memory. Каков наилучший способ достичь этого?
У меня нет проблем с сохранением визуального размера экрана (скажем, 1920x1200 пикселей), но происходит сбой, когда визуальное изображение очень большое (20000x20000 пикселей).
Может быть, не используете RenderTargetBitmap? есть ли альтернативы?
ПРИМЕЧАНИЕ. Конечной целью хранилища является файл с потерями.jpg или losseless.png.
2 ответа
20000 x 20000 пикселей = 400000000 пикселей. Раз 4 байта на пиксель = 1,5 Гб (несжатые данные)
Это просто слишком велико.
Я хотел бы создать несколько изображений и сшить их или использовать еще меньшие изображения и использовать их в качестве плиток.
Вы смотрели на создание документа XPS? Преобразование элемента управления WPF (XAML) в документ XPS По сути, вы можете взять визуальный элемент и выгрузить его в версию PDF от Microsoft - в наши дни стандартный просмотрщик довольно часто устанавливается на коробках и поставляется в Win 7. Преимущество документа XPS заключается в том, что он основан на векторах, поэтому он просто хранит инструкции для рисования. (Вы можете увидеть, как переименовать документ XPS в ZIP и распаковать его.)
Если у вас уже есть большие растровые изображения, встроенные в ваши визуальные эффекты, это может не сработать, но что-то попробовать.