Ефективно преобразуване на 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