Как конфертировать из типа Image в тип BitmapImage? - PullRequest
7 голосов
/ 26 апреля 2011

Кто-нибудь знает, как создать BitmapImage из изображения? Вот код, с которым я работаю:

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

Теперь у меня есть доступ к этому изображению в памяти. Дело в том, что мне нужно преобразовать это в тип BitmapImage, чтобы использовать его в моем решении.

ПРИМЕЧАНИЕ: Мне нужно преобразовать его в тип BitmapImage , а не в тип Растровое изображение . Я не смог понять это, потому что тип BitmapImage принимает Uri для своего конструктора.

Ответы [ 3 ]

6 голосов
/ 26 апреля 2011
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();
}
3 голосов
/ 26 апреля 2011

С этот пост

public BitmapImage ImageFromBuffer(Byte[] bytes)
{
    MemoryStream stream = new MemoryStream(bytes);
    BitmapImage image = new BitmapImage();
    image.BeginInit();
    image.StreamSource = stream;
    image.EndInit();
    return image;
}
1 голос
/ 26 апреля 2011

Вы уверены, что вам нужен BitmapImage, а не BitmapSource?BitmapImage является подклассом BitmapSource специально для создания источника в XAML (из URI).Есть много других вариантов BitmapSource - один из других вариантов может быть лучше.

Например, WriteableBitmap

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

Вы можете выбрать один размерхотите, а затем скопируйте в него пиксели.

...