IMG thumbnail - массовое создание миниатюр

Понедельник, 02 Май 2011

 

Очень часто возникает необходимость создания превью изображений, и если таких изображений достаточно много, то создавать миниатюры в графическом редакторе будет очень утомительно. Для решения этой задачи был написан простенький скрипт на PHP который создает миниатюры всех изображений из одной папки и сохраняет их в новой, при этом возвращает массив с ссылками на миниатюры.

 

  •  
  • function img_resize($src, $dest, $width, $height, $rgb, $quality){
  • if (!file_exists($src)) return false;
  • $size = getimagesize($src);
  • if ($size === false) return false;
  • // Определяем исходный формат по MIME-информации, предоставленной
  • // функцией getimagesize, и выбираем соответствующую формату
  • // imagecreatefrom-функцию.
  • $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  • $icfunc = "imagecreatefrom" . $format;
  • if (!function_exists($icfunc)) return false;
  •  
  • $x_ratio = $width / $size[0];
  • $y_ratio = $height / $size[1];
  • $ratio = min($x_ratio, $y_ratio);
  • $use_x_ratio = ($x_ratio == $ratio);
  • $new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
  • $new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  • $new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);
  • $new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
  • $isrc = $icfunc($src);
  • $idest = imagecreatetruecolor($width, $height);
  •  
  • imagefill($idest, 0, 0, $rgb);
  • imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
  • $new_width, $new_height, $size[0], $size[1]);
  • imagejpeg($idest, $dest, $quality);
  • imagedestroy($isrc);
  • imagedestroy($idest);
  • return true;
  • }
  •  
  • function list_file($dir){
  • if($dir[strlen($dir)-1] != '/'){
  • $dir .= '/'; //добавляем слеш в конец если его нет
  • }
  • $nDir=opendir($dir);
  • while(false!==($file=readdir($nDir))){
  • if($file!="."&&$file!=".."){
  • if(!is_dir($dir.$file)){
  • //если это не директория
  • $files[]=$file;
  • }
  • }
  • }
  • closedir( $nDir );
  • return $files;
  • }
  •  
  •  
  • $files=list_file('./pict');
  •  
  • if(count($files)>0){
  • $img = array();
  • for($i=0;$i<count($files);$i++){
  • img_resize("./pict/".$files[$i], "new/".$files[$i], 220, 151, 0xffffff, 100);
  • array_push($img,"new/".$files[$i]);
  • }
  • print_r($img);
  • }else{
  • echo "Отсутствую файлы для обработки!";
  • }
  •  

 

 

Данный скрипт состоит из двух функций:

 

 

* Параметры функции img_resize:

 

 

Скачать пример: IMG thumbnail.

 

PS. Читайте последние записи RSS Подписка на RSS

 

Метки:

Добавить комментарий