Image resize class

ilianskim

Senior Member
Моля ви да ми дадете някой читав клас за оразмеряване на картинки, че сега ползваният от мен нещо е бъгав и не ми се занимава да му търся оправяне (сегашният е timthumb.php) трябва ми следното
при 1000 картинки има нужда от пропорционално намаляване на ширина и височина. Пример задаваш път до картинката нова височина, нова ширина и то връща снимка с височината и ширината. Сегашният клас, който ползвам нещо се бъгва.
Мерси предварително. Аз продължавам да търся решение, но да питам и тук.
 
Re: Image resize class

Ползвам това на много места и работи добре:
Код:
function resampimagejpg( $forcedwidth, $forcedheight, $sourcefile, $destfile ) {
      $fw = $forcedwidth;
      $fh = $forcedheight;
      $is = getimagesize( $sourcefile );
      if( $is[0] >= $is[1] )  {
          $orientation = 0;
        }  else  {
           $orientation = 1;
           $fw = $forcedheight;
           $fh = $forcedwidth;
        }
      if ( $is[0] > $fw || $is[1] > $fh )  {
          if( ( $is[0] - $fw ) >= ( $is[1] - $fh ) )  {
              $iw = $fw;
              $ih = ( $fw / $is[0] ) * $is[1];
            } else {
              $ih = $fh;
              $iw = ( $ih / $is[1] ) * $is[0];
            }
          $t = 1;
        } else {
          $iw = $is[0];
          $ih = $is[1];
          $t = 2;
        }
      if ( $t == 1 ) {
          $img_src = imagecreatefromjpeg( $sourcefile );
          $img_dst = imagecreatetruecolor( $iw, $ih );
          imagecopyresampled( $img_dst, $img_src, 0, 0, 0, 0, $iw, $ih, $is[0], $is[1] );
          if( !imagejpeg( $img_dst, $destfile, 90 ) ) {
              exit( );
            }
        } else if ( $t == 2 ) {
          copy( $sourcefile, $destfile );
        }
    }
работи само за jpg файлове
 
Re: Image resize class

Ето какво направих цялостно за да заменя файловете изцяло и да кешира картинките и да не ги генерира всеки път т.е. смалява.
PHP:
$sourcefile=$_GET['src'];    
$forcedheight=$_GET['h'];
$forcedwidth = $_GET['w'];
$destfile = "cache/".md5($sourcefile).$forcedheight."x".$forcedwidth.".jpg";
 if (file_exists($destfile)) {
    header('Location: '.$destfile);
} else {
     resampimagejpg( $forcedwidth, $forcedheight, $sourcefile, $destfile );
     header('Location: '.$destfile);    
}

трябва да имате папка cache, където се записват новите картинки и ако има вече намалено копие се взима готовата картинка и не се губи време за оразмеряване.
Благодаря пак на Тед
 

Back
Горе