估计尺寸的图片将仅使用URL调整大小而无需下载

时间:2019-02-07 15:50:08

标签: python python-3.x python-imaging-library image-manipulation conceptual

我知道这很可能是不可能的,但我也愿意接受其他建议。

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

所有调整大小的图像都允许有最大大小,问题是我仅在计算客户端大小,因此,如果有人恶意发送非常大的图像,则可能会超载服务器内存,因为所有逻辑都是在内部处理的-记忆。

我是否可以验证该服务器端?从包含没有特定图案/尺寸的图像的URL列表中,我想知道调整大小后的图像总大小是否会超过一定限制

我知道通过查看content-lenght标头可以知道图像的大小,但是不确定在调整大小后是否可以估计/计算大小,特别是不知道尺寸。

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

1 个答案:

答案 0 :(得分:1)

  1. 如果没有“ Content-Length”字段或其值超过限制,请拒绝该请求。
  2. 否则,请下载图像,然后尝试将其转换为PIL图像。如果失败,请拒绝该请求。
  3. 检查图像的一个像素平均有多少字节。然后在调整大小后估计文件大小:estimated_size = requested_width * requested_height * bytes_per_pixel。如果估计的大小超出限制,则拒绝该请求。当然,估计值可能相对不准确,因此您可能要通过引入某种误差容限来解决这个问题。
  4. 调整图像大小,将其保存到内存,转到(1)
  5. 调整大小的图像并发送给他们