2011-04-25 13 views
6

¿Alguien sabe cómo crear una imagen de mapa de bits a partir de una imagen? Aquí está el código con el que estoy trabajando:Cómo convertir de tipo Imagen a tipo BitmapImage?

MemoryStream memStream = new MemoryStream(bytes); 
Image img = Image.FromStream(memStream); 

Ahora tengo acceso a esta imagen en la memoria. La cuestión es que necesito convertir esto para escribir BitmapImage para usarlo en mi solución.

NOTA: tengo que convertirlo a escribir BitmapImage No escriba Bitmap. No he podido descifrarlo porque el tipo BitmapImage toma un Uri para su constructor.

Respuesta

3

De this post

public BitmapImage ImageFromBuffer(Byte[] bytes) 
{ 
    MemoryStream stream = new MemoryStream(bytes); 
    BitmapImage image = new BitmapImage(); 
    image.BeginInit(); 
    image.StreamSource = stream; 
    image.EndInit(); 
    return image; 
} 
+0

su código funciona perfecto. Por alguna razón, aunque la mitad de las imágenes que corro, salen normales y la otra mitad salen negativas. ¿Algunas ideas? – loyalpenguin

+0

@loyalpenguin lo siento, no tengo ni idea de por qué la mitad de las imágenes resultan ser negativas. –

+0

es genial. Gracias por la respuesta. – loyalpenguin

6
Bitmap  img = (Bitmap) Image.FromStream(memStream); 
BitmapImage bmImg = new BitmapImage(); 

using (MemoryStream memStream2 = new MemoryStream()) 
{ 
    img.Save(memStream2, System.Drawing.Imaging.ImageFormat.Png); 
    ms.Position = 0; 

    bmImg.BeginInit(); 
    bmImg.CacheOption = BitmapCacheOption.OnLoad; 
    bmImg.UriSource = null; 
    bmImg.StreamSource = memStream2; 
    bmImg.EndInit(); 
} 
+0

su código también funciona perfecto. Por alguna razón, aunque la mitad de las imágenes que encuentro se vuelven normales y la otra mitad negativas, como cuando ejecuté el código de Bala. Alguna idea sobre por qué esto sucedería? – loyalpenguin

+0

No tengo idea. Lo siento. –

+0

eso es genial. Veré si es algo en mi código. Además, al igual que 3 de las 25 imágenes que aún no se muestran, algunas de sus propiedades siguen mostrando el alto y el ancho. ¿Es esto un problema de memoria? – loyalpenguin

1

¿Estás seguro de que necesita BitmapImage, no BitmapSource? BitmapImage es una subclase de BitmapSource específicamente para crear una fuente en XAML (desde un URI). Hay muchas otras opciones de BitmapSource: una de las otras opciones podría ser mejor.

Por ejemplo, WriteableBitmap

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx

Usted puede hacer uno del tamaño que desee y, a continuación, copiar píxeles hacia él.

Cuestiones relacionadas