显示来自字节 [ ] 的图像

Olg*_*lga 2 c# wpf xaml byte image

我使用 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; }
}
Run Code Online (Sandbox Code Playgroud)

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

<GroupBox BorderThickness="1">
    <Image Source="..."/>
</GroupBox>
Run Code Online (Sandbox Code Playgroud)

Source="..."如果我从一个字节[]创建一个临时文件,我必须写进去?

Cle*_*ens 6

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

<Image Source="{Binding FileData}"/>
Run Code Online (Sandbox Code Playgroud)

这是因为 WPF 提供了从多种源类型(包括byte[]、 到ImageSource.


类型转换由ImageSourceConverter注册为 TypeConverter的类执行

[TypeConverterAttribute(typeof(ImageSourceConverter))]
public abstract class ImageSource ...
Run Code Online (Sandbox Code Playgroud)

并执行类似的操作:

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