Часто бывает нужным создание пропорционально уменьшенных миниатюр фотографий или больших картинок (thumbnail). В основном это применяется для галерей, но порой нужно переслать кому-то много фотографий, а интернет-канал не шибко широкий. Вот для этих целей и подойдет мой маленький скрипт на PHP, уменьшающий изображения из указанной папки и сохраняя полученные картинки в папку со скриптом (пути легко настраиваются).
Пока мы умеем работать только с jpg, на этот скрипт послужит, скорее всего, началом к созданию галереи на jQuery и PHP, как единого целого. Хватит слов, перейдем к делу.
Создаем скрипт

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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_y_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.
Результат выполнения скрипта можно узреть тут. Все получено из фотографий более чем 3хмегабайтного размера.