Python 估计图像大小后,将只使用url调整大小,而不下载它

Python 估计图像大小后,将只使用url调整大小,而不下载它,python,python-3.x,python-imaging-library,image-manipulation,conceptual,Python,Python 3.x,Python Imaging Library,Image Manipulation,Conceptual,我明白这很可能是不可能的,但我也愿意接受其他建议 这里的问题很简单,我有一个后端API,它接收包含非常大图像的URL列表,然后下载、调整大小、压缩并发送回 所有调整大小的图像都有一个最大允许大小,问题是我只计算客户端的大小,所以如果有人恶意发送非常大的图像,可能会使服务器内存过载,因为所有逻辑都在内存中处理 我有没有办法验证这个服务器端?从包含没有特定图案/大小的图像的URL列表中,我想知道调整大小后它们的总大小是否会超过某个限制 我知道通过查看内容长度标题可以知道图像大小,但不确定在调整大小后

我明白这很可能是不可能的,但我也愿意接受其他建议

这里的问题很简单,我有一个后端API,它接收包含非常大图像的URL列表,然后下载、调整大小、压缩并发送回

所有调整大小的图像都有一个最大允许大小,问题是我只计算客户端的大小,所以如果有人恶意发送非常大的图像,可能会使服务器内存过载,因为所有逻辑都在内存中处理

我有没有办法验证这个服务器端?从包含没有特定图案/大小的图像的URL列表中,我想知道调整大小后它们的总大小是否会超过某个限制

我知道通过查看内容长度标题可以知道图像大小,但不确定在调整大小后是否可以估计/计算大小,特别是不知道尺寸

我正在标记python和PIL,因为它们是我正在使用的工具,但我不确定这里是否需要任何代码,这主要是一个概念性问题

  • 如果没有“内容长度”字段或其值超过限制,则拒绝请求
  • 否则,请下载图像并尝试将其转换为PIL图像。如果失败,请拒绝该请求
  • 检查图像的一个像素中平均有多少字节。然后在调整大小后估计文件大小:
    估计的大小=请求的宽度*请求的高度*每像素字节数
    。如果估计大小超过限制,请拒绝请求。当然,估计可能相对不准确,因此您可能希望通过引入某种误差来解释这一点
  • 调整图像大小,将其保存到内存,转到(1)
  • 路径调整后的图像并发送它们

  • 但重要的是在开始下载之前要知道所有图像的大小。我想只有这样,它才能跟踪总大小,如果超过了EAH,就会中止,这就是我所说的“限制”。当要下载的图像的总大小超过此限制时,可以逐个下载图像并中止整个操作(或返回不完整的结果)