Проблема с функцией ImageCreateFromJpeg

Максимыч

Новичок
Проблема с функцией ImageCreateFromJpeg

Вот код функции для уменьшения фотки:
<?
function reimage($ish,$pol,$x,$y)
{
$star=imageCreateFromJpeg($ish);
$ratio=$x/$y;
$size_img=getimagesize($ish);
$src_ratio=$size_img[0]/$size_img[1];
if ($ratio<$src_ratio)
{
$y=$x/$src_ratio;
}
else
{
$x=$y*$src_ratio;
}
$nov=imageCreateTrueColor($x,$y);
$white = imagecolorallocate($nov, 255, 255, 255);
imageCopyResampled($nov,$star,0,0,0,0,$x,$y,ImageSX($star),ImageSY($star));
ImageJpeg($nov,$pol);
ImageDestroy($nov);
ImageDestroy($star);
return true;
}
?>

При попытке обработать файл больше 100 Кб выдаёт ошибку:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1600 bytes) in /home/cskaorg/public_html/wallpaper/admin/func.php on line 4

Что это за "зверь"??? И как это поправить?
 

zxc

Новичок
Или как вариант ini_set() + memory_limit
(пример из мануала imageCreateFromJpeg(), думаю нужно ещё добавить ограничение на максимальное значение)

PHP:
<?php

$imageInfo = getimagesize('PATH/TO/YOUR/IMAGE');
$memoryNeeded = round(($imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $imageInfo['channels'] / 8 + Pow(2, 16)) * 1.65);
                   
if (function_exists('memory_get_usage') && memory_get_usage() + $memoryNeeded > (integer) ini_get('memory_limit') * pow(1024, 2)) {
                       
   ini_set('memory_limit', (integer) ini_get('memory_limit') + ceil(((memory_get_usage() + $memoryNeeded) - (integer) ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) . 'M');
                       
}

?>
 

Максимыч

Новичок
Хостер отказывается увеличить объём выделенной для меня памяти (что в принципе не удивительно).
Вопрос: можно ли это как-нибудь обойти?
 
Сверху