gpt4 book ai didi

c# - 从基于 JSON/PHP (base64_encode) 的图像中解释 C# 中的 base 64

转载 作者:可可西里 更新时间:2023-11-01 00:10:15 24 4
gpt4 key购买 nike

所以我能够成功读取图像文件,并将其传回我的 C# 应用程序,但我无法正确解码它。

我正在通过 PHP 返回 JSON 数据(未显示 json_encode 函数):

        $imgbinary = fread(fopen($filename, "r"), filesize($filename));

if ( strlen($imgbinary) > 0 ){
return array("success"=>true, "map"=>base64_encode($imgbinary));
}

然后在 C# 中,我使用 Newtonsoft.Json 解码字符串(我可以成功读取和 map 属性),但我无法使用 base64 解码将图像正确写入文件(或显示) .

我是这样做的:

File.WriteAllText(System.Windows.Forms.Application.StartupPath + "\\MyDir\\" + FileName, Base64Decode(FileData));

public string Base64Decode(string data)
{
byte[] binary = Convert.FromBase64String(data);
return Encoding.Default.GetString(binary);
}

我是不是漏掉了一些非常简单的东西?真正奇怪的是在我解码数据后,文件大小比原始文件大。 (我发现一旦你编码,数据增加了大约 33%,奇怪的是我解码后,它仍然更大)。

任何帮助/指点将不胜感激!

最佳答案

Am I missing something crazy simple here?

是的。图片不是文本文件,因此您不应使用File.WriteAllText。您认为图像文件中存在哪些字符?区分数据何时基本上是文本以及何时基本上是二进制数据真的非常重要。如果您试图将其中一个当作另一个来对待,那您就是在自找麻烦。

不要将字节数组转换回文本(您的Encoding.Default.GetString 调用将丢失数据)- 只需使用:

File.WriteAllBytes(path, Convert.FromBase64String(data));

关于c# - 从基于 JSON/PHP (base64_encode) 的图像中解释 C# 中的 base 64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10421075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com