2011-04-25 36 views
6

有谁知道如何从图像创建一个BitmapImage?以下是我正在使用的代码:如何将Image类型转换为BitmapImage类型?

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

现在我可以在内存中访问此映像。事情是我需要将其转换为类型BitmapImage为了在我的解决方案中使用它。

注:我需要将其转换为键入BitmapImage的没有输入位图。我一直无法弄清楚,因为类型BitmapImage在它的构造函数中使用Uri。

回答

3

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

你的代码完美无缺。出于某种原因,虽然我通过这个图像的一半图像出现了正常,另一半图像出现了负面现象。有任何想法吗? – loyalpenguin 2011-04-25 21:28:59

+0

@loyalpenguin对不起,我不知道为什么有一半的图像是负面的。 – 2011-04-25 22:29:54

+0

很酷。感谢你的回答。 – loyalpenguin 2011-04-25 22:48:01

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

你的代码也完美工作。出于某种原因,尽管我运行过的图像中有一半是正常的,另一半却是负面的,就像我跑巴拉的代码时一样。任何想法为什么会发生? – loyalpenguin 2011-04-25 21:35:57

+0

我不知道。抱歉。 – 2011-04-25 21:39:43

+0

很酷。我会看看它是否在我的代码中。也就是说25个图像中有3个不显示,但它们的一些特性仍然显示出高度和宽度。这是一个记忆问题吗? – loyalpenguin 2011-04-25 21:43:08

相关问题