Imagedestroy не освобождает память - PullRequest
2 голосов
/ 15 декабря 2011

Я запускаю цикл, который содержит скрипт, который идентифицирует белый фон на изображениях, а затем копирует обрезанную версию изображения без этого белого фона. В конце цикла я использую imagedestroy для освобождения памяти, но сценарий тем не менее превышает лимит памяти (> 256 МБ). Как это может быть?

Код внутри цикла:

$img = imagecreatefromjpeg($imgSrc);

/* Script for identifying whitespace */

//create new image
$newimg = imagecreatetruecolor(
            imagesx($img)-($wsLeft+$wsRight), imagesy($img)-($wsTop+$wsBottom));

//get new width and height
$width = imagesx($newimg);
$height = imagesy($newimg);

//free memory
imagedestroy($newimg);
imagedestroy($img);

1 Ответ

0 голосов
/ 04 сентября 2015

У меня были те же проблемы с памятью (создание сотен изображений в цикле). Постарайтесь поместить как можно больше в функции. По любой причине PHP обрабатывает разные по функциям Image-ресурсы.

<?php
$newimg = imagecreatefromjpeg2($imgSrc,$wsLeft,$wsRight,$wsTop,$wsBottom);

function imagecreatefromjpeg2($imgSrc,$wsLeft,$wsRight,$wsTop,$wsBottom){
    $img = imagecreatefromjpeg($imgSrc);
    $newimg = imagecreatetruecolor(
    imagesx($img)-($wsLeft+$wsRight), imagesy($img)-($wsTop+$wsBottom));


        imagedestroy($img);
        return $newimg
}
$width = imagesx($newimg);
$height = imagesy($newimg); 
 ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...