@raina
Для пропорционального уменьшения изображения в PHP можно использовать функции GD:
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 |
<?php // Путь к оригинальному изображению $sourceImage = 'путь_к_файлу'; // Максимальная ширина и высота для уменьшения $maxWidth = 500; $maxHeight = 500; // Получение информации о размере оригинального изображения list($width, $height) = getimagesize($sourceImage); // Рассчитываем новый размер изображения с сохранением пропорций $ratio = min($maxWidth / $width, $maxHeight / $height); $newWidth = $width * $ratio; $newHeight = $height * $ratio; // Создание нового изображения с заданными размерами $newImage = imagecreatetruecolor($newWidth, $newHeight); $source = imagecreatefromjpeg($sourceImage); // Уменьшение изображения с помощью функции imagecopyresampled imagecopyresampled($newImage, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); // Сохранение уменьшенного изображения imagejpeg($newImage, 'новый_файл.jpg', 90); ?> |
В этом примере мы использовали функцию getimagesize()
, чтобы получить информацию о размере оригинального изображения. Затем мы рассчитали новые размеры изображения с сохранением пропорций, используя коэффициент уменьшения $ratio
. Затем создали новое изображение с заданными размерами с помощью imagecreatetruecolor()
. Далее мы использовали функцию imagecopyresampled()
, чтобы уменьшить изображение с помощью выбранного режима интерполяции. Наконец, сохранили уменьшенное изображение с помощью imagejpeg()
.