Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从类型Image转换为类型BitmapImage?_C#_.net_Image_Image Processing - Fatal编程技术网

C# 如何从类型Image转换为类型BitmapImage?

C# 如何从类型Image转换为类型BitmapImage?,c#,.net,image,image-processing,C#,.net,Image,Image Processing,有人知道如何从图像创建位图图像吗?以下是我正在使用的代码: MemoryStream memStream = new MemoryStream(bytes); Image img = Image.FromStream(memStream); 现在我可以在内存中访问此图像。问题是我需要将其转换为BitmapImage类型,以便在解决方案中使用它 注意:我需要将其转换为类型位图图像而不是类型位图。我还没弄明白,因为类型BitmapImage为它的构造函数引入了一个Uri 来自 Bitmap

有人知道如何从图像创建位图图像吗?以下是我正在使用的代码:

MemoryStream memStream = new MemoryStream(bytes);
Image img = Image.FromStream(memStream);
现在我可以在内存中访问此图像。问题是我需要将其转换为BitmapImage类型,以便在解决方案中使用它

注意:我需要将其转换为类型位图图像而不是类型位图。我还没弄明白,因为类型BitmapImage为它的构造函数引入了一个Uri

来自

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();
}

是否确实需要BitmapImage,而不是BitmapSource?BitmapImage是BitmapSource的一个子类,专门用于在XAML(从URI)中生成源。还有许多其他的BitmapSource选择——其中一个可能更好

例如,WriteableBitmap


您可以制作一个您想要的大小,然后将像素复制到其中。

您的代码工作正常。出于某种原因,虽然我在这里看到的一半图像是正常的,另一半是负片。有什么想法吗?@Loyalpunguin抱歉,我不知道为什么一半的图片都是负片。你的代码也很好用。出于某种原因,虽然我在这里运行的图像有一半是正常的,另一半是负片,就像我运行Bala的代码时一样。你知道为什么会这样吗?很酷。我看看我的代码里有没有什么东西。另外,25张图像中有3张没有显示,但它们的一些属性仍然显示高度和宽度。这是内存问题吗?听起来不一定像内存问题。
public BitmapImage ImageFromBuffer(Byte[] bytes)
{
    MemoryStream stream = new MemoryStream(bytes);
    BitmapImage image = new BitmapImage();
    image.BeginInit();
    image.StreamSource = stream;
    image.EndInit();
    return image;
}