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