Я использую PHP 7.1 с библиотекой GD.
Мой скрипт загружает изображения и изменяет их размер перед сохранением. Сервер имеет 256 МБ памяти (невозможно увеличить).
Некоторые изображения имеют большой физический размер (не размер файла), превышающий 50 Мпикс. Когда я пытаюсь изменить его размер с помощью GD, в этой строке возникает ошибка ограничения памяти:
<?php
$image = imagecreatefromjpeg($file);
Скрипт получает изображения в виде HTTP-ответа PSR-7. Перед изменением размера изображения мне нужно проверить его, достаточно ли памяти для изменения размера изображения?
Я пытался проверить изображения по размеру файла, но он отбрасывает изображения с нормальным физическим размером, но большим размером файла:
<?php
$fileIsOk = (int)$response->getBody()->getSize() <= SOME_MAGIC_SIZE_IN_BYTES;
if ($fileIsOk) {
// do the stuff
}
Например, мой сценарий не работает с изображением 50.2Mpx 1.51MB, но нормально с 3.6Mpx 1.02MB.
Моя идея - проверить изображение, получив количество Mpx:
Так что мне нужно проверить, может ли скрипт изменить размер изображения в условиях ограниченного объема памяти на основе количества Mpx. Как я могу получить его из объекта ответа PSR-7?