C# 将图像转换为base64并检查大小
我使用以下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
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)代码>