@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()
.
@raina
Код, который я предоставил в предыдущем ответе, работает с изображениями формата JPEG. Если вам нужно уменьшить изображение другого формата, вам нужно будет использовать соответствующие функции для чтения изображения и сохранения уменьшенной копии.
Например, если вам нужно уменьшить изображение формата PNG, вам нужно будет использовать функции imagecreatefrompng() для создания изображения из PNG-файла и imagepng() для сохранения его:
1 2 3 4 5 6 7 8 |
// Создание нового изображения из файла PNG $source = imagecreatefrompng($sourceImage); // Уменьшение изображения с помощью функции imagecopyresampled imagecopyresampled($newImage, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); // Сохранение уменьшенного изображения формата PNG imagepng($newImage, 'новый_файл.png'); |
Аналогично, для работы с изображениями формата GIF используются функции imagecreatefromgif() и imagegif(), и т.д. Можете адаптировать код в зависимости от формата вашего изображения.