<?php
function savethumb ($path, $image, $size) {
if (!is_file($path)) {
list($width, $height)=getimagesize($image);
$original=imagecreatefromjpeg($image);
$thumb=imagecreatetruecolor($size['width'], $size['height']);
imagecopyresampled($thumb, $original, 0, 0, 0, 0, $size['width'], $size['height'], $width, $height);
imagejpeg($thumb, $path, 100);
echo 'Создано изображение '.$path.', шириной '.$size['width'].' и высотой '.$size['height'].' пикселей.<br />';
}
return $path;
}
function makethumbs ($files, $params=false) {
// $files - массив с адресами фото. В Интернете или на диске
if(!is_array($params)) $params=array(
'height'=>200, // Минимальная высота строки
'width'=>850, // Ширина колонки
'margin'=>1, // Расстояние между фотографиями
'folder'=>'thumbs/' // Папка, в которую будут записаны миниатюры. С слешем в конце
);
foreach($files as $file) {
list($images[$file]['width'], $images[$file]['height'])=getimagesize($file);
}
$i=0;
foreach($images as $file=>$image){
if (($str_width+($width=$image['width']*$params['height']/$image['height']))>=$params['width']) {
$strings[$i]['height'] = $params['height']*($params['width']-$params['margin']*count($strings[$i]['files'])+$params['margin'])/($str_width-$params['margin']*count($strings[$i]['files']));
$str_width=$width+$params['margin'];
$i++;
} else $str_width+=$params['margin']+$width;
$strings[$i]['files'][$file]=$image;
}
$strings[$i]['height']=$params['height']*($params['width']-$params['margin']*count($strings[$i]['files'])+$params['margin'])/($str_width-$params['margin']*count($strings[$i]['files']));
foreach ($strings as $key=>$string) {
$str_width=0;
foreach($string['files'] as $file=>$image) $str_width+=round($string['height']/$images[$file]['height']*$images[$file]['width'])+$params['margin'];
$strings[$key]['width']=$params['width']-($str_width-$params['margin']);
}
$i=1;
foreach ($strings as $key=>$string) {
$files_counter=count($string['files']);
foreach($string['files'] as $file=>$image) {
$img_width=$string['height']/$images[$file]['height']*$images[$file]['width'];
savethumb($params['folder'].$i++.'.jpg', $file, array('width'=>round($img_width+(($string['width']>0)?ceil($string['width']/$files_counter):floor($string['width']/$files_counter))), 'height'=>round($string['height']))).'<br />';
//echo '<img style="display: block; margin-right: '.$params['margin'].'px; float: left" src="'.savethumb($params['folder'].$i++.'.jpg', $file, array('width'=>round($img_width+(($string['width']>0)?ceil($string['width']/$files_counter):floor($string['width']/$files_counter))), 'height'=>round($string['height']))).'" />';
$string['width']-=(($string['width']>0)?ceil($string['width']/$files_counter):floor($string['width']/$files_counter));
$files_counter--;
} //echo '<div style="clear: both; height: '.$params['margin'].'px; font-size: 0%"></div>';
}
}
?>