[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: imagecreatetruecolor PHP 5
sfairet
imagecreatetruecolor($sizex,$sizey); PHP 5

Очень странно себя ведет:

Ресурс создается не всегда, причем когда не создается не вылетают ни
эксепшены ни прочие ошибки, просто скрипт PHP перестает работать.

Зависит от параметра sizey, и исходной картинки.
Например на двух картинках обе jpg на одной срабатывает на другой нет.

Первая картинка размеров 1280 на 800, ресурс создается размером 620
на 388 успешно.

Вторая картинка 1280 на 960, ресурс создается размером 620 на 465,
скрипт на создании ресурса просто останавливается.

Если во второй картинке вручную задать разрешение создаваемого
ресурса 620 на 350, то она уменьшается успешно.

Причем если для первой картинки вручную задать разрешение ресурса 620
на 500 то она тоже создается успешно.

Не понимаю вообще причем тут картинка исходная, т.к. до неё там дело вообще еще не доходит, но факт что остановка происходит на этой функции.

Голову уже сломал себе что не так...

ну и кусок кода:

Код
function Resample(&$img, $owdt, $ohgt, $maxwdt, $maxhgt, $quality=1) {

  if(!$maxwdt) $divwdt=0;
   else $divwdt=Max(1,$owdt/$maxwdt);

  if(!$maxhgt) $divhgt=0;
   else $divhgt=Max(1,$ohgt/$maxhgt);

  if($divwdt>=$divhgt) {
      echo "<br>!!!1!!!<br>";
    $newwdt=$maxwdt;
    $newhgt=round($ohgt/$divwdt);
  } else {
      echo "<br>!!!2!!!<br>";
    $newhgt=$maxhgt;
    $newwdt=round($owdt/$divhgt);
  }
  $newwdt=(int)$newwdt;
  $newhgt=(int)$newhgt;
  echo $newhgt;
  //$newhgt=350;
echo gettype($newwdt).$newwdt.";".gettype($newhgt).$newhgt;
try {
    $tn=imagecreatetruecolor($newwdt,$newhgt) or die('Что то пошло не так, звони админу.'); // ВОТ ТУТ ОБРЫВ
}
  catch (Exception $e) {
    echo 'Выброшено исключение: ',  $e->getMessage(), "<br>";
}
echo "<br>finish<br>";
    if($quality){
  
        imagecopyresampled($tn,$img,0,0,0,0,$newwdt,$newhgt,$owdt,$ohgt);
  
    }    
    else{
  
        imagecopyresized($tn,$img,0,0,0,0,$newwdt,$newhgt,$owdt,$ohgt);
    
    }

    imagedestroy($img);
  
    $img = $tn;

    return array($newwdt, $newhgt);
}

//вызов происходит так:
echo $newimg.";".$owdt.";".$ohgt.";".$otype."<br>";
    $this->Resample($newimg, $owdt, $ohgt, 620, 800);
   echo "finish";




Спустя 15 часов, 54 минуты, 45 секунд (19.09.2008 - 08:40) amadeus написал(а):
Скрипт рабочий сам по себе, надо видимо искать причину в другом. Какое значение memory_limit у Вас в php.ini?

Спустя 4 часа, 9 минут, 37 секунд (19.09.2008 - 12:50) sfairet написал(а):
Цитата(amadeus @ 19.9.2008, 5:40) [snapback]48756[/snapback]
Скрипт рабочий сам по себе, надо видимо искать причину в другом. Какое значение memory_limit у Вас в php.ini?


Уже разобрался, именно в memory_limit была проблема, стоял 8Мб.

Вообще конечно обработка изображений удивила меня, много ресурсов ест, чтобы создать картинку 2000 на 1500 пикселей надо выделить 15Мб памяти =(

Спасибо!=)

Спустя 5 часов, 39 минут, 10 секунд (19.09.2008 - 18:29) amadeus написал(а):
Цитата(sfairet @ 19.9.2008, 13:50) [snapback]48773[/snapback]
Вообще конечно обработка изображений удивила меня, много ресурсов ест, чтобы создать картинку 2000 на 1500 пикселей надо выделить 15Мб памяти

А что тут удивительного? 2000*1500 пикселей, в truecolor по 4байта на каждый пиксел, сами умножайте rolleyes.gif Так что никакой фантастики, сплошная арифметика.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.