从Base64字符串获取图像文件大小

时间:2012-08-01 14:53:03

标签: python image

我正在开发一个python Web服务。 它调用另一个Web服务来更改配置文件的图片。

它连接到另一个Web服务。 此Web服务只能接受4 MB或更小的图片。

我会将检查放在第一个Web服务中。 它使用PIL检查base64字符串是否是有效图像。 但是,如何检查base64字符串是否会创建4 MB或更小的图像?

3 个答案:

答案 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为单位的文件大小