Тест ответа PHP 7 PSR-7, если скрипт может изменить размер изображения с помощью GD в условиях ограниченной памяти - PullRequest
0 голосов
/ 05 сентября 2018

Я использую 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?

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете преобразовать тело ответа в строку и использовать getimagesizefromstring () для этого

<?php
$imageData = (string) $response->getBody();
[$width, $height] = getimagesizefromstring($imageData);
$px = $width * $height;
...