如何从Image类型转换为BitmapImage类型



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

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

现在我可以访问内存中的这个图像了。问题是我需要将它转换为BitmapImage类型以便在我的解决方案中使用它

注意:我需要将其转换为类型BitmapImage而不是类型Bitmap。我还没能弄清楚,因为类型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();
}

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

您确定需要BitmapImage而不是BitmapSource吗?BitmapImage是BitmapSource的一个子类,专门用于在XAML中创建源(来自URI)。还有许多其他的BitmapSource选择——其中一个选择可能会更好。

例如WriteableBitmap

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

你可以设定一个你想要的大小,然后复制像素到它上面。

在内存流中保存对在内存中创建的图像不起作用。所以我改进了已经存在的答案如下:

ImageConverter converter = new ImageConverter();
byte[] buffer = (byte[])converter.ConvertTo(image, typeof(byte[]));
MemoryStream loadStream = new MemoryStream(buffer);
BitmapImage returnValue = new();
returnValue.BeginInit();
returnValue.StreamSource = loadStream;
returnValue.EndInit();
return returnValue;

最新更新