Как пропорционально уменьшить изображение в php?

Пользователь

от raina , в категории: PHP , 10 месяцев назад

Как пропорционально уменьшить изображение в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от linnea , 10 месяцев назад

@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().

Пользователь

от roma , 21 день назад

@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(), и т.д. Можете адаптировать код в зависимости от формата вашего изображения.