Код на обрезание превьюшек (Thumbs)

Тема в разделе "PHP", создана пользователем vave, 7 июл 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Всем привет!
    Столкнулся с проблемой, очень нужно что бы после загрузки изображений, превьюшки обрезались, что бы все (Thumbs) были ровными квадратиками независимо от их высоты или ширины,
    вот код где проходят ресайзы:

    PHP:
     function resize ($resizeone$resizetou$newdimone$newdimtou$resizestry$resizefor$resizefive)
      {
        if (
    $resizefive == 2)
        {
          
    $resizeone imagecreatefromjpeg ($resizeone);
          
    $resizesex imagecreatetruecolor ($resizestry$resizefor);
          
    imagecopyresampled ($resizesex$resizeone0000$resizestry$resizefor$newdimone$newdimtou);
          
    touch ($resizetou);
          
    imagejpeg ($resizesex$resizetou100);
          
    imagedestroy ($resizesex);
          return 
    null;
        }

        if (
    $resizefive == 3)
        {
          
    $resizeone imagecreatefrompng ($resizeone);
          
    $resizesex imagecreatetruecolor ($resizestry$resizefor);
          
    imagecopyresampled ($resizesex$resizeone0000$resizestry$resizefor$newdimone$newdimtou);
          
    touch ($resizetou);
          
    imagepng ($resizesex$resizetou100);
          
    imagedestroy ($resizesex);
        }

      }
    и тут

    PHP:
    $sizes = array ('enlarge' => array (30003000), 'large' => array (448336), 'thumb' => array (200300), 'small' => array (12090));
    - (Другой файл)
     
  2. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    Для решения проблемы имхо легче использовать готовые классы работы с превьюшками

    http://phpthumb.sourceforge.net/
     
  3. SolarWind

    SolarWind Создатель

    Регистр.:
    18 авг 2008
    Сообщения:
    42
    Симпатии:
    11
    можно сделать так:
    PHP:
      function resize ($resizeone$resizetou$newdimone$newdimtou$resizestry$resizefor$resizefive$crop false)
      {
        if (
    $resizefive == 2)
        {
          
    $resizeone imagecreatefromjpeg ($resizeone);
          
    $resizesex imagecreatetruecolor ($resizestry$resizefor);
          if(
    $crop) {
            
    $scale=min((float)($newdimone/$resizestry),(float)($newdimtou/$resizefor)); 
            
    // coords to crop
            
    $sx=(float)($newdimone-($scale*$resizestry));
            
    $sy=(float)($newdimtou-($scale*$resizefor));   
            
    // cropped image size
            
    $sw=(float)($newdimone-$sx);
            
    $sh=(float)($newdimtou-$sy); 
            
    imagecopyresampled ($resizesex$resizeone00$sx/2$sy/2$resizestry$resizefor$sw$sh);
          } else {
            
    imagecopyresampled ($resizesex$resizeone0000$resizestry$resizefor$newdimone$newdimtou);
          }
          
    touch ($resizetou);
          
    imagejpeg ($resizesex$resizetou);
          
    imagedestroy ($resizesex);
          return 
    null;
        }
    }
    если в функцию будет передан, последний аргумент $crop, то картинка будет не только уменьшатся до заданного размера, но и будут обрезаться края, чтобы получилась пропорция заданного размера.

    в autoboss тебе еще надо будет поменять строку, где эта функция вызывается:
    resize ('../temp/' . $file, '../thumbs/' . $file, $info[0], $info[1], 100, 100, $info[2], true);
    http://rapidshare.com/files/253070932/attach.rar.html
     
    vave нравится это.
  4. RayTraceR1

    RayTraceR1 Создатель

    Регистр.:
    27 июн 2009
    Сообщения:
    44
    Симпатии:
    15
Статус темы:
Закрыта.