我正在尝试将指纹字节数组转换为WPF应用程序中的imagesource但我的技巧无效。 这是代码:
byte[] fp_image; //fp_image contains the fingerprint byte array result
using (MemoryStream ms = new MemoryStream(fp_image))
{
Bitmap bmp = new Bitmap(ms);
FpImage.Source = ConvertToImageSource(bmp);
}
public static ImageSource ConvertToImageSource(Bitmap bitmap)
{
var imageSourceConverter = new ImageSourceConverter();
using (var memoryStream = new MemoryStream())
{
bitmap.Save(memoryStream, ImageFormat.Png);
var snapshotBytes = memoryStream.ToArray();
return (ImageSource)imageSourceConverter.ConvertFrom(snapshotBytes); ;
}
}
注意:如果我将任何其他图像转换为字节数组并使用此代码将其转换回图像,则可以正常工作。
答案 0 :(得分:0)
假设byte[] fp_image
包含原始数据,那么您可以使用下面显示的方法直接创建BitmapSource
(ImageSource
的子类)。但是,您需要知道缓冲区中位图的宽度,高度和像素格式。
public BitmapSource GetBitmapFromRawBytes(
byte[] rawBytes, int width, int height, PixelFormat format)
{
var stride = (width * format.BitsPerPixel + 7) / 8;
return BitmapSource.Create(width, height, 96, 96, format, null, rawBytes, stride);
}