Примерный размер изображения будет после изменения размера только с URL, не загружая его - PullRequest
0 голосов
/ 07 февраля 2019

Я понимаю, что это, скорее всего, невозможно, но я также открыт для других предложений.

Проблема здесь проста, у меня есть этот внутренний API, который получает список URL-адресов, содержащих очень большие изображения, которыезатем загружаются, изменяются размеры, архивируются и отправляются обратно.

Существует максимальный размер, разрешенный для всех совместно измененных изображений, проблема в том, что я вычисляю размер только на стороне клиента, поэтому, если кто-то злонамеренно отправляет очень большие изображения, онвероятно, будет перегружать память сервера, так как вся логика обрабатывается в памяти.

Есть ли способ проверить эту серверную часть для меня?Из списка URL-адресов, содержащих изображения без определенного шаблона / размера, я хочу знать, пройдет ли их общий размер после изменения их размера определенный предел

Я знаю, что можно узнать размер изображения, посмотрев на контент-Длина заголовка, но не уверен, смогу ли я оценить / рассчитать размер после изменения размера, особенно не зная размеров.

Я помечаю Python и PIL, так как это инструменты, которые я использую, но я неуверен, что здесь нужен какой-то код, это в основном концептуальный вопрос.

1 Ответ

0 голосов
/ 07 февраля 2019
  1. Отклонить запрос, если нет поля «Content-Length» или его значение превышает ограничение.
  2. В противном случае загрузите изображение и попытайтесь преобразовать его в изображение PIL.Если это не удается, отклоните запрос.
  3. Проверьте, сколько байтов в среднем в одном пикселе изображения.Затем оцените размер файла после изменения размера: estimated_size = requested_width * requested_height * bytes_per_pixel.Если предполагаемый размер превышает лимит, отклоните запрос.Конечно, оценка может быть относительно неточной, поэтому вы можете учесть это, введя какой-либо запас погрешности.
  4. Изменить размер изображения, сохранить его в памяти, перейти к (1)
  5. Пропустите измененные изображения и отправьте их
...