将png文件存储为字符串

时间:2018-01-31 21:26:32

标签: c# json

我将以下内容存储为json元素的值

enter image description here

当我在文本可视化工具中打开它时,它看起来像这样

enter image description here

除了PNG之外,其他所有事情都会发生什么?

如果这是字符串无法容纳的内容,我该如何确保它包含整个内容?我问的原因是我试图将其反序列化为包含字符串属性的C#对象,但显然因为这个垃圾内容而为null。

我是否需要编码/解码,或使用UTF-8,或删除一些特殊字符或其他东西,以便我可以将整个png内容保存在字符串变量中?

3 个答案:

答案 0 :(得分:6)

png是二进制(非文本)文件格式。要将其嵌入json中,您应该将值视为编码形式的byte[]string,例如base-64或hexadecimal。 Convert.ToBase64String会从byte[]向您提供base-64,但坦率地说,我只需要将您的JSON序列化程序设为byte[]并让 担心它。

答案 1 :(得分:2)

如果你想用JSON存储二进制数据,base 64是一个很好的方法:

以下是获取该字符串的示例:

public string ImageToBase64(string path)   
{  
    using(System.Drawing.Image image = System.Drawing.Image.FromFile(path))  
    {  
        using(MemoryStream m = new MemoryStream())  
        {  
            image.Save(m, image.RawFormat);  
            byte[] imageBytes = m.ToArray();  
            return Convert.ToBase64String(imageBytes);   
        }  
    }  
}  

答案 2 :(得分:0)

在发送照片或文件之前,base64会对其进行编码。

string myPhoto = Convert.ToBase64String(System.IO.File.ReadAllBytes(filepath));

然后解码

byte[] tempBytes = Convert.FromBase64String(PhotoString);