该BitmapImage.StreamSource
属性仅接受包含编码位图缓冲区的流,例如PNG或JPEG.
为了从原始像素数据创建BitmapSource
(基类BitmapImage
),您可以使用该BitmapSource.Create()
方法.根据每个像素的位数以及alpha和颜色通道的顺序,您还必须选择合适的位数PixelFormat
.
假设有一个8位灰度格式,你可以像这样创建一个BitmapSource:
private BitmapSource LoadImage(int width, int height, byte[] imageData) { var format = PixelFormats.Gray8; var stride = (width * format.BitsPerPixel + 7) / 8; return BitmapSource.Create(width, height, 96, 96, format, null, imageData, stride); }
当然,您还必须将属性的类型更改为BitmapSource
(无论如何更灵活,因为您仍然可以分配BitmapImage
).
public BitmapSource Picture { get; set; }