WPF - Bitmap to BitmapImage


Il est souvent très difficile de s'y retrouver dans les gestions d'images entre .Net2.0 et .Net3.0 (WPF).

Voilà donc deux méthodes très simples permettant de :
- Créer un BitmapImage à partir d'un fichier image,
- Créer un BitmapSource à partir d'un Bitmap.


1/  BitmapImage à partir d'une Image

using System;
using System.Collections.Generic;
using System.Windows.Media.Imaging;

...

public static BitmapImage getBitmapImage(String pathImage)
{
  try
  {
   System.IO.FileStream fs = System.IO.File.Open(pathImage, System.IO.FileMode.Open);
   byte[] buffer = new byte[Convert.ToInt32(fs.Length)];
   fs.Read(buffer, 0, Convert.ToInt32(fs.Length));
   System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);
   BitmapImage image = new BitmapImage();
   image.BeginInit();
   image.StreamSource = ms;
   image.EndInit();
   image.Freeze();

   fs.Close();
   fs.Dispose();
   return image;
}
catch (Exception)
{
   return new BitmapImage();
}
}

...

 

Il est également trè simple de passer d'un Bitmap à un BitmapImage, puisque celui ci possède un attribut source (BitmapSource) qu'il suffit de remplir.

La méthode suivante génère un BitmapSource à partir d'un Bitmap qu'il suffit d'attribuer au source d'un BitmapImage.

2/ BitmapImage à partir d'un Bitmap

using System;
using System.Collections.Generic;
using System.Windows.Media.Imaging;

...

public static BitmapSource loadBitmap(System.Drawing.Bitmap source)
{
return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
      source.GetHbitmap(),
      IntPtr.Zero,
      System.Windows.Int32Rect.Empty,
      System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()
    );
}

...

 

 

 
Mise à jour le Vendredi, 21 Août 2009 09:03