Неустранимая ошибка изменения размера изображения PHP: недостаточно памяти

У меня есть следующий код PHP, который изменяет размер моих фотографий до желаемого размера:

/* POSTER - resize */
$remote_file = $castImages[$name];
$new_width  = 296;
$new_height = 436;
list($width, $height) = getimagesize($remote_file);
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($remote_file);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, '../glumci/'.$name.' BIG.jpg', 100);
$new_width  = 74;
$new_height = 109;
list($width, $height) = getimagesize($remote_file);
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($remote_file);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, '../glumci/'.$name.'.jpg', 100);
imagedestroy($image_p);
imagedestroy($image);

У меня есть около 5500 картинок для изменения размера, поэтому я запускаю этот код в цикле while и получаю эту ошибку из PHP:

Fatal error: Out of memory (allocated 473956352) (tried to allocate 27263000 bytes) in D:\portal_ONLINE\UwAmp\www\inc\test.php on line 54

Затем я добавляю в скрипт PHP этот код:

ini_set('memory_limit', '-1');

Но я получаю то же сообщение об ошибке .. так как исправить эту ошибку, чтобы скрипт переименовал все 5500 картинок, а не только 50 и выдать эту ошибку?

1

Решение

После помощи от участников из ответов на повторы я получил рабочий код:

/* POSTER - resize */
$remote_file = $castImages[$name];
$new_width  = 296;
$new_height = 436;
list($width, $height) = getimagesize($remote_file);
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($remote_file);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, '../glumci/'.$name.' BIG.jpg', 100);
$image_p = null;
$image = null;

$new_width  = 74;
$new_height = 109;
list($width, $height) = getimagesize($remote_file);
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($remote_file);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, '../glumci/'.$name.'.jpg', 100);
imagedestroy($image_p);
imagedestroy($image);
$image_p = null;
$image = null;

С помощью:

$image_p = null;
$image = null;

Теперь он работает около 20 минут, и скрипт работает, а не выдаёт сообщение об ошибке.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]