我无法将编码形式的图像解码为从我的数据库中检索的(Jpeg)字节数组,以用作我的WPF应用程序的图像源。
我用来将它们编码为Jpeg字节数组的代码如下:
public byte[] bytesFromBitmap(BitmapImage bit)
{
byte[] data;
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bit));
using (MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
data = ms.ToArray();
}
return data;
}
这是我的图片直接从网页上拍摄并分配到像这样的图像控件:
var img = new BitmapImage(new Uri(entity.Image.ImageSrc)); //the entity has been saved in my DB, having been parsed from html
pbImage.Source = img;
这很好用,我对BitmapImage进行了编码,它保存得很好。但是当我从数据库中检索它并尝试在另一个窗口中显示它时,在尝试我可以在网上看到的每个例子之后我都无法让它工作 - 所有这些都没有渲染,或者黑盒子或视觉混乱根本不相似我编码的图像。
以下任何一项都不适用于我:
public BitmapSource GetBMImage(byte[] data)
{
using (var ms = new MemoryStream(data))
{
JpegBitmapDecoder decoder = new JpegBitmapDecoder(ms, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapSource frame = decoder.Frames[0];
return frame;
}
}
public static BitmapImage ImageFromBytes(byte[] imageData)
{
if (imageData == null)
{
return null;
}
else
{
var image = new BitmapImage();
using (var mem = new MemoryStream())
{
mem.Position = 0;
image.BeginInit();
image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = null;
image.StreamSource = mem;
image.EndInit();
}
image.Freeze();
return image;
}
} //this throws a 'No imaging component suitable to complete this operation was found' exception
在内存流和解码器的其他用途中,我无法让它工作 - 任何人都可以帮忙吗?