За последние 24 часа нас посетили 20560 программистов и 1825 роботов. Сейчас ищут 1002 программиста ...

imagecreatetruecolor PHP 5

Тема в разделе "Обработка изображений средствами PHP", создана пользователем sfairet, 18 сен 2008.

  1. sfairet

    sfairet Активный пользователь

    С нами с:
    18 сен 2008
    Сообщения:
    1
    Симпатии:
    0
    imagecreatetruecolor($sizex,$sizey); PHP 5

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

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

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

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

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

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

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

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

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

    ну и кусок кода:
    PHP:
    1.  
    2. function Resample(&$img, $owdt, $ohgt, $maxwdt, $maxhgt, $quality=1) {
    3.  
    4.   if(!$maxwdt) $divwdt=0;
    5.    else $divwdt=Max(1,$owdt/$maxwdt);
    6.  
    7.   if(!$maxhgt) $divhgt=0;
    8.    else $divhgt=Max(1,$ohgt/$maxhgt);
    9.  
    10.   if($divwdt>=$divhgt) {
    11.       echo "<br>!!!1!!!<br>";
    12.     $newwdt=$maxwdt;
    13.     $newhgt=round($ohgt/$divwdt);
    14.   } else {
    15.       echo "<br>!!!2!!!<br>";
    16.     $newhgt=$maxhgt;
    17.     $newwdt=round($owdt/$divhgt);
    18.   }
    19.   $newwdt=(int)$newwdt;
    20.   $newhgt=(int)$newhgt;
    21.   echo $newhgt;
    22.   //$newhgt=350;
    23. echo gettype($newwdt).$newwdt.";".gettype($newhgt).$newhgt;
    24. try {
    25.     $tn=imagecreatetruecolor($newwdt,$newhgt) or die('Что то пошло не так, звони админу.'); // ВОТ ТУТ ОБРЫВ
    26. }
    27.   catch (Exception $e) {
    28.     echo 'Выброшено исключение: ',  $e->getMessage(), "<br>";
    29. }
    30. echo "<br>finish<br>";
    31.     if($quality){
    32.  
    33.         imagecopyresampled($tn,$img,0,0,0,0,$newwdt,$newhgt,$owdt,$ohgt);
    34.  
    35.     }    
    36.     else{
    37.  
    38.         imagecopyresized($tn,$img,0,0,0,0,$newwdt,$newhgt,$owdt,$ohgt);
    39.    
    40.     }
    41.  
    42.     imagedestroy($img);
    43.  
    44.     $img = $tn;
    45.  
    46.     return array($newwdt, $newhgt);
    47. }
    48.  
    49. //вызов происходит так:
    50. echo $newimg.";".$owdt.";".$ohgt.";".$otype."<br>";
    51.     $this->Resample($newimg, $owdt, $ohgt, 620, 800);
    52.    echo "finish";
    53.