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