我正在开发一个 python web 服务。它调用另一个 Web 服务来更改配置文件的图片。
它连接到另一个 Web 服务。此 Web 服务只能接受 4 MB 或更小的图片。
我将检查放在第一个 Web 服务中。它使用 PIL 检查 base64 字符串是否为有效图像。但是,如何检查 base64 字符串是否会创建 4 MB 或更小的图像?
将数据的长度乘以 3/4,因为编码会将 6 个字节变成 8 个字节。如果结果在 4MB 的几个字节内,那么您需要计算最后的数量=
。
我正在使用这个:
def size(b64string):
return (len(b64string) * 3) / 4 - b64string.count('=', -2)
我们删除了填充的长度,它要么是 no,要么是一个或两个字符=
,如此处所述。
可能不是最优的。我不知道 str.count(char) 的效率如何。另一方面,它只对长度为 2 的字符串执行。
图像大小可以从字符串长度计算。由于每个字符代表 6 位,每个“=”符号表示缺少 8 位。 参考
file_size = (len(base64_string) * 6 - base64_string.count('=') * 8) / 8
或者
file_size = len(base64_string) * 3 / 4 - base64_string.count('=')
将以字节为单位给出文件大小,并将其划分为兆(= 1000000)将以兆字节为单位给出文件大小