从byte []显示图像

时间:2016-09-07 08:53:43

标签: c# wpf image xaml byte

我使用C#,wpf。我有一个图像,它以以下形式存储: byte []

public interface IFile
{
    int Id { get; set; }
    byte[] FileData { get; set; }        
    string FileName { get; set; }
    int? FileSize { get; set; }
    string FileExtension { get; set; }
}

如何在表单上显示我的图片(FileData byte [] )?

<GroupBox BorderThickness="1">
    <Image Source="..."/>
</GroupBox>

如果我从byte []创建一个临时文件,我必须写入Source="..."吗?

1 个答案:

答案 0 :(得分:4)

如果你有一个实现IFile接口的视图模型类,并且它的FileData属性包含一个像PNG或JPEG这样的编码图像缓冲区,你可以直接绑定到这个属性,就像这样:

<Image Source="{Binding FileData}"/>

这是因为WPF提供了从几种来源类型(包括byte[])到ImageSource的内置自动类型转换。

类型转换由类ImageSourceConverter执行,该类已注册为TypeConverter

[TypeConverterAttribute(typeof(ImageSourceConverter))]
public abstract class ImageSource ...

并做了类似的事情:

byte[] buffer = ...
ImageSource result;
using (var stream = new MemoryStream(buffer))
{
    result = BitmapFrame.Create(
        stream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
}