Эффективное преобразование byte [] в BitmapImage и наоборот в C #

Мне нужно получить BitmapImage из массива байтов. В настоящее время я работаю с MemoryStream (byte [] -> MemoryStream -> BitmapImage), но, похоже, это неэффективно. Та же ситуация, но наоборот - мне нужно получить массив байтов, представляющий BitmapFrame. Опять же, я делаю это с помощью MemoryStream.

Как наиболее эффективно выполнить эту задачу? Можно ли ускорить конвертацию?

Заранее благодарим за ответы и подсказки!

Ваше здоровье


person Jamie    schedule 29.08.2010    source источник
comment
Что заставляет вас думать, что метод MemoryStream неэффективен?   -  person Tahbaza    schedule 29.08.2010
comment
Я действительно заметил, что это довольно медленно - я ищу наиболее эффективный.   -  person Jamie    schedule 29.08.2010
comment
А как насчет byte [] в качестве поддержки для объекта растрового изображения?   -  person Dykam    schedule 29.08.2010
comment
Я думаю, он имеет в виду, что чтение массива байтов может быть дорогостоящей частью, в зависимости от того, откуда вы его читаете. Поток памяти требует дополнительных накладных расходов по сравнению с получением потока непосредственно из источника, но заметных задержек быть не должно, если вы не работаете с действительно большими изображениями. Попробуйте протестировать только код, который создает растровое изображение, и посмотрите, сколько времени это займет.   -  person Alex Paven    schedule 30.08.2010


Ответы (1)


Я использую BitmapSource.CopyPixels для извлечения байтов из BitmapSource, а затем BitmapSource.Create для создания нового изображения из массива байтов.

Я не уверен, насколько это эффективно, но для моих целей этого достаточно (я могу извлекать пиксели, перекрашивать их и затем вставлять обратно на изображение размером 2000 * 2000 с едва заметной задержкой).

person Matěj Zábský    schedule 30.08.2010