В настоящее время я пытаюсь получить форму, которая позволит загружать несколько изображений и изменять их размер на сервере с помощью PHP. Каждое загруженное клиентом изображение имеет размер около 2,5 МБ.
В настоящее время я использую функцию move_uploaded_file()
.
Нет проблем с переносом файлов на сервер. Проблема возникает, когда я пытаюсь обрезать. Не имея ImageMagick на своем хосте, я использую эту настройку (не весь код, а только то, что важно, это в цикле с $width
и т. Д., Меняющимся для разных размеров культур)
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
imagejpeg($image_p, $output_filename, 80);
В нынешнем виде это будет работать только для 2 изображений. Если отправлено 3 или более файлов, я получаю ошибку «исчерпана память». Я исследовал это, поскольку мой предел памяти составляет 120 МБ. По-видимому, функция imagecreatefromjpeg
использует много памяти, особенно если файл имеет большое разрешение (что у меня - следовательно, зачем мне их обрезать / изменить размер).
Кто-нибудь знает о более эффективном подходе к этой задаче? Я исследовал в Google, но все используют ту же технику, что и я.