将包含System.Drawing.Image的对象序列化为json

时间:2015-03-20 13:28:29

标签: c# json serialization .net-4.5

我遇到了一些问题,似乎无法解决问题......

我有一个包含图像的接口(和实现的类)......

    Guid uid { get; set; }
    Image imageData1 { get; set; }
    string fileName { get; set; }

图像作为byte []存储在DB中,因为我将其反序列化为动态,然后使用我编写的将byte []转换为图像的转换函数填充我想要的对象

问题是另一个方向......

string tmpJson = JsonConvert.SerializeObject( IclassOjbect );

此函数序列化图像的类名。但不是图像数据作为字节数组。

我可以获取图像数据并转换为序列化之外的byte [],但不知道如何将其注入tmpJSON来代替"图像类名称"没有做一些危险的字符串操作......

有没有人对此有任何想法?

1 个答案:

答案 0 :(得分:0)

刚刚在谷歌上找到了这个,所以我想我可能会添加一个答案,即使过了这么久:

[JsonIgnore]
public Image Image { get; set; } = null;

public byte[] ImageAsByte
{
    get
    {
        if (this.Image != null)
        {
            using (var ms = new MemoryStream())
            {
                this.Image.Save(ms, this.Image.RawFormat);
                return ms.ToArray();
            }
        }

        return null;
    }

    set
    {
        if (value != null)
        {
            using (var ms = new MemoryStream(value))
            {
                this.Image = Image.FromStream(ms);
            }
        }
    }
}