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

时间:2011-02-02 23:33:49

标签: 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.ToBase64String(buffer);
        }

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

2 个答案:

答案 0 :(得分:7)

您可以使用简单的数学计算它。 base64的一个字符代表6位,因此四个字符代表三个字节。所以你得到每个字符3/4字节。这给出了:

int base64EncodedSize = 4 * originalSizeInBytes / 3;

根据数据的填充方式,它可能会被一两个字符关闭,但这不会产生影响。

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

答案 1 :(得分:0)

你输了 - base64字符串将使用比原始图像更多的字节来存储。可能是 lot 更多,如果这是全内存的:.Net中的字符串是unicode,因此它们使用的字节数是ASCII编码字符串的两倍。