Создание пропорционального thumbnail’а
При создании различных галерей картинок (а также сайтов, на которые посетители могут закачивать картинки) возникает необходимость создавать уменьшенные копии картинок для предварительного просмотра - thumbnails. Они, понятное дело, должны быть копией оригинальной картинки, уменьшенной с сохранением пропорций. В данной статье приводится функция, создающая такие thumbnail'ы.
Сначала пишем простую функцию для получения расширения файла:
-
function get_file_ext($fname) {
-
} // get_file_ext
Теперь делаем код, создающий пропорционально уменьшенный thumbnail.
Параметры:
- $fname - название исходного файла
- $thumb_fname - название конечного файла
- $max_x - максимальная ширина thumbnail'а (необязательный параметр)
- $max_y - максимальная высота thumbnail'а (необязательный параметр)
В результате получается либо false, либо готовый файл с пропорционально уменьшенным thumbnail'ом.
-
function generate_thumbnail($fname, $thumb_fname, $max_x=99, $max_y=99) {
-
$ext = get_file_ext($fname);
-
switch ($ext) {
-
case 'jpg':
-
case 'jpeg':
-
break;
-
-
case 'gif':
-
break;
-
-
case 'png':
-
break;
-
-
default:
-
return false;
-
break;
-
} // switch type
-
if (@$im) {
-
if (($width > $max_x) or ($height > $max_y)) {
-
if ($width > $height) {
-
$nw = $max_x;
-
$nh = ($max_x / $width) * $height;
-
}
-
else {
-
$nw = ($max_y / $height) * $width;
-
$nh = $max_y;
-
}
-
} // need to resize
-
else {
-
} // just copy image
-
} // created image
-
else {
-
return false;
-
}
-
} // generate_thumbnail


December 4th, 2007 at 20:08 Quote
Ваш скрипт не работает с изображениями , размерами выходящими за пределы тысячи . К примеру, не создается thumbnail для фото размером 3072*2304.
December 5th, 2007 at 07:22 Quote
Андрей @ 04.12.2007, 20:08 #
вообще-то работает... посмотрите код, все в порядке же :)
December 5th, 2007 at 17:26 Quote
Возможно ли , что у меня что-то с GD - библиотекой ?