Вступление
Создавая галерею изображений на PHP, практически всегда необходимо создавать превью большого изображения. Сделать превью квадратным немного сложнее обычного изменения размеров изображения.
Функция square_previewнаверх
Создадим функцию void square_preview(string $filename, string $size), которая будет создавать квадратные превью из JPEG-изображений Функция будет принимать два параметра: имя файла и размер стороны квадрата.
<?php
/**
* void square_preview - создание квадратных превью из JPEG-файлов
*
* string $file - имя файла оригинального изображения
* int $size - размер стороны квадрата превью
*
*/
function square_preview($file, $size)
{
// Выставляем заголовок
header("Content-Type: image/jpg");
// Открываем оригинальное изображение
$source = imagecreatefromjpeg($file);
// Получаем размеры оригинального изображения
list($width, $height) = getimagesize($file);
// Превью
$thumbs = imagecreatetruecolor($size, $size);
// Горизонтальное изображение
if ($width > $height && $width > $size)
{
imagecopyresampled($thumbs, $source, 0, 0, (($width-$height)/2), 0, $size, $size, $height, $height);
}
// Вертикальное изображение
elseif ($height > $width && $height > $size)
{
imagecopyresampled($thumbs, $source, 0, 0, 0, (($height-$width)/2), $size, $size, $width, $width);
}
// Если квадрат
elseif ($height == $width && $height > $size)
{
imagecopyresampled($thumbs, $source, 0, 0, 0, 0, $size, $size, $width, $width);
}
// Изображение меньше размеров стороны
else
{
$thumbs = $source;
}
// Выводим изображение
imagejpeg($thumbs);
}
?>