Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert from type Image to type BitmapImage?

Does anyone know how to create a BitmapImage from an Image? Here is the code that I'm working with:

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

Now I have access to this image in memory. The thing is I need to convert this to type BitmapImage in order to use it in my solution.

NOTE: I need to convert it to type BitmapImage not type Bitmap. I haven't been able to figure it out because type BitmapImage takes in a Uri for it's constructor.

like image 409
Edward Avatar asked Apr 25 '11 20:04

Edward


3 Answers

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

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

   bmImg.BeginInit();
   bmImg.CacheOption = BitmapCacheOption.OnLoad;
   bmImg.UriSource = null;
   bmImg.StreamSource = memStream2;
   bmImg.EndInit();
}
like image 185
Mark Cidade Avatar answered Nov 17 '22 00:11

Mark Cidade


From 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;
}
like image 22
Bala R Avatar answered Nov 17 '22 02:11

Bala R


Are you sure you need BitmapImage, not BitmapSource? BitmapImage is a subclass of BitmapSource specifically for making a source in XAML (from a URI). There are many other BitmapSource choices -- one of the other choices might be better.

For example, WriteableBitmap

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

You can make one of the size you want, and then copy pixels over to it.

like image 39
Lou Franco Avatar answered Nov 17 '22 02:11

Lou Franco