PHP из памяти изменить размер памяти не помогает

Я пытаюсь изменить размер изображения с imagecopyresampled, Проблема, у меня есть очень большие изображения, это 25 000 х 25 000 пикселей. Я пытаюсь запустить его на локальном хосте, мой компьютер установил 8 Гб оперативной памяти. PHP я получаю ошибку:

Fatal error: Out of memory (allocated 1844969472) (tried to allocate 86400 bytes)

я пытаюсь увеличить объем памяти в файле php.ini: memory_limit=6144M и в файле php: ini_set('memory_limit', '-1'); но это не помогает

мне код:

public function copyResample($pasteStartX, $pasteStartY, $startCopyX, $startCopyY, $dstWidth, $dstHeight, $srcWidth, $srcHeight, $outputPathToFileWOExt) {
$dstImage = imagecreatetruecolor($dstWidth, $dstHeight);

switch ($this->getMimeType()) {

case 'image/jpg':
case 'image/jpeg':
$srcImage = imagecreatefromjpeg($this->getPathToFile());
break;

case 'image/png':
$srcImage = imagecreatefrompng($this->getPathToFile());
break;

case 'image/gif':
$srcImage = imagecreatefromgif($this->getPathToFile());
break;

default:
throw new Exception("File is not an image, please use another file type.", 1);
}

imagecopyresampled($dstImage, $srcImage, $pasteStartX, $pasteStartY, $startCopyX, $startCopyY, $dstWidth, $dstHeight, $srcWidth, $srcHeight);

switch ($this->getMimeType()) {

case 'image/jpg':
case 'image/jpeg':
if (imagetypes() && IMG_JPG) {
imagejpeg($dstImage, $outputPathToFileWOExt . "." . $this->getExt());
}
break;

case 'image/png':
if (imagetypes() && IMG_PNG) {
imagepng($dstImage, $outputPathToFileWOExt . "." . $this->getExt());
}
break;

case 'image/gif':
if (imagetypes() && IMG_GIF) {
imagegif($dstImage, $outputPathToFileWOExt . "." . $this->getExt());
}
break;
}
}

0

Решение

Простой факт в том, что у вас все еще не хватает памяти. Для изображения с разрешением 25 000 x 25 000 пикселей потребуется чертовски много памяти — и вдвое больше, если вы выполняете копирование изображений с передискретизацией.

1

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

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

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