Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将图像转换为base64并检查大小_C#_Base64_Filestream - Fatal编程技术网

C# 将图像转换为base64并检查大小

C# 将图像转换为base64并检查大小,c#,base64,filestream,C#,Base64,Filestream,我使用以下c代码将图像文件转换为base64字符串 using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read)) { var buffer = new byte[fs.Length]; fs.Read(buffer, 0, (int)fs.Length); var base64 = Convert.ToBase64Strin

我使用以下c代码将图像文件转换为base64字符串

using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
        {
            var buffer = new byte[fs.Length];
            fs.Read(buffer, 0, (int)fs.Length);
            var base64 = Convert.ToBase64String(buffer);
        }

如何测试前后尺寸?图像文件大小和基64字符串的大小。我想通过转换来检查我是赢了还是输了。

你可以用简单的数学来计算。base64的一个字符表示6位,因此四个字符表示三个字节。所以每个字符有3/4个字节。其中:

int base64EncodedSize = 4 * originalSizeInBytes / 3;
根据数据的填充方式,它可能会被关闭一两个字符,但这不会有什么区别


此外,如果您怀疑base64可能更高效,那么您究竟在拿它与什么进行比较?与原始二进制文件相比,它总是导致大小增加33%。

您正在丢失-base64字符串将使用比原始图像更多的字节来存储。如果这一切都在内存中,可能会更多:.Net中的字符串是unicode,因此它们使用的字节数是ASCII编码字符串的两倍。

实际上增加了167%,因为
Convert.ToBase64String
返回unicode字符串。@MusiGenesis:…当使用正确的传输编码(UTF-8)进行编码时,例如,它不会比拉丁-1字符串占用更多的空间。是的,但尽管它仍然是.Net字符串,但它的大小是.Net字符串的两倍。我不确定这个人想要完成什么,但你是对的,他们可能正在某处发送这个,而不是将其保存在内存中或写入DB文本字段或其他内容。要读取缓冲区,请尝试
var buffer=File.ReadAllBytes(filename)