Часто бывает нужным создание пропорционально уменьшенных миниатюр фотографий или больших картинок (thumbnail). В основном это применяется для галерей, но порой нужно переслать кому-то много фотографий, а интернет-канал не шибко широкий. Вот для этих целей и подойдет мой маленький скрипт на PHP, уменьшающий изображения из указанной папки и сохраняя полученные картинки в папку со скриптом (пути легко настраиваются).
Пока мы умеем работать только с jpg, на этот скрипт послужит, скорее всего, началом к созданию галереи на jQuery и PHP, как единого целого. Хватит слов, перейдем к делу.
Создаем скрипт
<?php
$width = 300;
$height = 200;
//задаем размеры миниатюр
foreach (glob("./imgs/*.jpg") as $filename) {
$i++; //будущее название миниатюры
$size = getimagesize($filename); //размер изображения
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
//mime-тип
$icFunc = "imagecreatefrom" . $format;
//создаем изображение на основе mime-типа
$xRatio = $width / $size[0];
$yRatio = $height / $size[1];
//высчитываем пропорции и определяем наибольшую сторону
//чтобы было пропорционально
$ratio = min($xRatio, $yRatio);
$use_x_ratio = ($xRatio == $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($filename);
$idest = imagecreatetruecolor($width, $height);
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
$new_width, $new_height, $size[0], $size[1]);
//создаем изображение и записываем его в файл
//!!!ОБЯЗАТЕЛЬНО: папка, куда сохраняем должна доступна быть для записи
imagejpeg($idest, "$i.jpg", 100);
imagedestroy($isrc);
imagedestroy($idest);
echo "<img src=\"$i.jpg\" />";
//выводим череду миниатюр, полученныз из больших картинок
}
?>
После нам нужно найти кучу фотографий большого объема и сохранить их в папку imgs, расширение у файлов должно быть jpg.
Запускаем скрипт и вуаля, получаем в папке со скриптом миниатюры, размеры которых легко задаются в начале скрипта PHP.