12

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

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

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

4

3 回答 3

19

将数据的长度乘以 3/4,因为编码会将 6 个字节变成 8 个字节。如果结果在 4MB 的几个字节内,那么您需要计算最后的数量=

于 2012-08-01T14:54:05.530 回答
8

我正在使用这个:

def size(b64string):
    return (len(b64string) * 3) / 4 - b64string.count('=', -2)

我们删除了填充的长度,它要么是 no,要么是一个或两个字符=,如此处所述

可能不是最优的。我不知道 str.count(char) 的效率如何。另一方面,它只对长度为 2 的字符串执行。

于 2015-07-02T13:32:41.780 回答
-1

图像大小可以从字符串长度计算。由于每个字符代表 6 位,每个“=”符号表示缺少 8 位。 参考

file_size = (len(base64_string) * 6 - base64_string.count('=') * 8) / 8

或者

file_size = len(base64_string) * 3 / 4 - base64_string.count('=')

将以字节为单位给出文件大小,并将其划分为兆(= 1000000)将以兆字节为单位给出文件大小

于 2020-05-13T02:23:23.030 回答