PHp - ошибка памяти при изменении размера изображения PNG - PullRequest
0 голосов
/ 12 ноября 2009

У меня есть скрипт, который создает миниатюру из загруженного изображения. он отлично работает с jpgs, но выдает ошибку

Неустранимая ошибка: допустимый объем памяти 67108864 байта исчерпан (попытка выделить 26250000 байтов)

когда я загружаю изображение в формате png.

Сценарий:

//create thumbnail; $modwidth and height are calculated in another part of the script
//$original is the path to the full sized image

$tn = imagecreatetruecolor($modwidth, $modheight); 
switch (strrchr($new_image_name,'.')) {
  case ".jpg":
    $image = imagecreatefromjpeg($original);
    break;
  case ".jpeg":
    $image = imagecreatefromjpeg($original);
    break;
  case ".png":
    $image = imagecreatefrompng($original);
    break;
  case ".gif":
    $image = imagecreatefromgif($original);
    break;
}
imagecopyresampled($tn, $image, 0, 0, $x_pos, $y_pos, $modwidth, $modheight, $width, $height); 
switch (strrchr($new_image_name,'.')) {
  case ".jpg":
    imagejpeg($tn, $target_path, 100);
    break;
  case ".jpeg":
    imagejpeg($tn, $target_path, 100);
    break;
  case ".png":
    imagepng($tn, $target_path, 0);
    break;
  case ".gif":
    imagegif($tn, $target_path);
    break;
}

Как я уже сказал, он отлично работает с JPG, а также с GIF. Эта ошибка памяти появляется только для PNG, и я использовал только изображение размером 1,2 МБ.

Как я могу решить это? Спасибо Patrick

Ответы [ 2 ]

2 голосов
/ 12 ноября 2009

Используйте ini_set('memory_limit', '256M'); перед сценарием.

1 голос
/ 12 ноября 2009

Вам нужно увеличить значение memory_limit в php.ini примерно так:

memory_limit = 128M
...