Для уменьшения размера изображения в PHP можно использовать встроенную функцию imagecopyresampled(). Вот простой пример кода:
```php
$thumbnail = 'path/to/thumbnail.jpg'; // имя файла для миниатюры
$maxWidth = 200; // максимальная ширина миниатюры
$maxHeight = 200; // максимальная высота миниатюры
// открываем исходное изображение
$sourceImage = imagecreatefromjpeg('path/to/image.jpg'
![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
;
// получаем размеры исходного изображения
$sourceWidth = imagesx($sourceImage);
$sourceHeight = imagesy($sourceImage);
// находим соотношение сторон исходного изображения
$sourceRatio = $sourceWidth / $sourceHeight;
// вычисляем размеры для миниатюры
if ($maxWidth / $maxHeight > $sourceRatio) {
$thumbnailWidth = $maxHeight * $sourceRatio;
$thumbnailHeight = $maxHeight;
} else {
$thumbnailWidth = $maxWidth;
$thumbnailHeight = $maxWidth / $sourceRatio;
}
// создаем новое изображение для миниатюры
$thumbnailImage = imagecreatetruecolor($thumbnailWidth, $thumbnailHeight);
// копируем изображение с изменением размера
imagecopyresampled($thumbnailImage, $sourceImage, 0, 0, 0, 0, $thumbnailWidth, $thumbnailHeight, $sourceWidth, $sourceHeight);
// сохраняем миниатюру в файл
imagejpeg($thumbnailImage, $thumbnail, 80);
// очищаем память
imagedestroy($sourceImage);
imagedestroy($thumbnailImage);
```
Код создает миниатюру из исходного изображения с ограничением максимальной ширины и высоты. Миниатюра сохраняется в файл с заданным именем и качеством сжатия 80.