visual tutorial studio pagina framework examples application wpf

wpf - tutorial - Convertir la secuencia de la memoria a BitmapImage?



wpf vs winforms (2)

Tengo una imagen que originalmente era un archivo PNG que he convertido a byte [] y guardado en una base de datos. Originalmente, simplemente leí PNG en una secuencia de memoria y convertí la secuencia en un byte []. Ahora quiero leer el byte [] y convertirlo a BitmapImage, para poder vincularlo con un control de imagen WPF.

Estoy viendo una gran cantidad de código contradictorio y confuso en línea para realizar la tarea de convertir un byte [] en un BitmapImage. No estoy seguro de si necesito agregar algún código debido al hecho de que la imagen era originalmente PNG.

¿Alguien puede proporcionar el código para convertir la transmisión en una BitmapImage? Gracias por tu ayuda.


Esto debería hacerlo:

using (var stream = new MemoryStream(data)) { var bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.StreamSource = stream; bitmap.CacheOption = BitmapCacheOption.OnLoad; bitmap.EndInit(); bitmap.Freeze(); }

El BitmapCacheOption.OnLoad es importante en este caso porque, de lo contrario, BitmapImage podría intentar acceder a la transmisión cuando se realiza la carga a pedido y es posible que la transmisión ya esté cerrada.

Congelar el mapa de bits es opcional, pero si lo congela, puede compartir el mapa de bits a través de subprocesos que de otro modo sería imposible.

No tiene que hacer nada especial con respecto al formato de la imagen: BitmapImage lo resolverá.


using (var stream = new MemoryStream(data)) { var bi = BitmapFrame.Create(stream , BitmapCreateOptions.IgnoreImageCache, BitmapCacheOption.OnLoad); }