Черная картинка при ресайзе картинки меньше 600 пикселей

thunderslim

Новичок
Черная картинка при ресайзе картинки меньше 600 пикселей

Добрый день.
Возникла следующая проблема. Есть функция ресайза картинок, которая представлена ниже, она обрезает и уменьшеает каритнку до заданных значений высоты и ширины. Но. Она работает с картинками по ширине более 600 пикселей. С меньшими по ширине выдает как превьюшку черную картинку.
-----------
PHP:
function imgreszres($src,$is)
{
 $imgsrc = imagecreatefromjpeg($src);
 $width = imagesx($imgsrc);
 $height = imagesy($imgsrc);
 $imgfinal = imagecreatetruecolor(172, 140);
 $n1 = $is.date("idHsz").".jpg";
 copy ($src, "/home/www/images/dow/$n1");

 if ($width>=$height)
     {
      //Подгон по высоте
      $hdest=140;

      $ratio=$width/$height;
      $wdest=round($ratio*$hdest);
      $imgdest=imagecreatetruecolor($wdest,$hdest);
      //echo $wdest."-----".$ratio;
      imagecopyresampled($imgdest, $imgsrc, 0, 0, 0, 0, $wdest, $hdest, $width, $height);

      if ($wdest>172)
          {
           $center=$wdest/2;
           $c_is=172/2;
           $leftpoint=round($center-$c_is);
           $rightpoint=round($center+$c_is);
           imagecopyresampled($imgfinal,$imgdest,0,0,$leftpoint,0,172,140,172,140);


          }
          $n2 = "a".$n1;
          imagejpeg($imgfinal, "/home/prestigetru/www/images/dow/".$n2);

          //imagejpeg($imgdest, "test/testing.jpg", 100);
          //imagejpeg($imgfinal, "test/final.jpg", 100);
     }
 else
     {
      $wdest=172;
      $ratio=$height/$width;
      $hdest=round($ratio*$wdest);
      $imgdest=imagecreatetruecolor($wdest,$hdest);
      imagecopyresampled($imgdest, $imgsrc, 0, 0, 0, 0, $wdest, $hdest, $width, $height);

      if ($hdest>140)
          {
           $center=$hdest/2;
           $c_is=140/2;
           $toppoint=round($center-$c_is);
           $botpoint=round($center+$c_is);
           imagecopyresampled($imgfinal,$imgdest,0,0,0,$toppoint,172,140,172,140);


          }
      $n2 = "a".$n1;
      imagejpeg($imgfinal, "/home/www/images/dow/".$n2);

     }
  return $n1;
 }
 

Фанат

oncle terrible
Команда форума
ты подставляешь в функцию imagecopyresampled какие-то цифры.
тебе не приходило в голову проверить, ЧТО ты подставляешь?

и тебе не кажется, что в твоей функции многовато кода? Раза этак в два, чем нужно?
 
Сверху