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

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

от clifford , в категории: PHP , 2 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от roxanne.hauck , 2 года назад

@clifford 

Для пропорционального уменьшения изображения в PHP можно использовать функцию imagecopyresampled().


Перед использованием этой функции, вы должны загрузить оригинальное изображение с помощью функции imagecreatefromjpeg(), imagecreatefrompng() или imagecreatefromgif(). Затем, вы можете создать новое изображение с желаемыми размерами, используя функцию imagecreatetruecolor(). Далее, вы можете использовать функцию imagecopyresampled() для изменения размеров изображения с сохранением его пропорций.


Ниже приведен пример кода, который пропорционально уменьшает изображение:

 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
27
28
29
30
31
32
33
34
35
36
37
// Путь к оригинальному изображению
$original_image = 'path/to/original/image.jpg';

// Желаемые размеры уменьшенного изображения
$width = 500;
$height = 500;

// Создаем изображение с желаемыми размерами
$new_image = imagecreatetruecolor($width, $height);

// Загружаем оригинальное изображение
$original = imagecreatefromjpeg($original_image);

// Получаем размеры оригинального изображения
$original_width = imagesx($original);
$original_height = imagesy($original);

// Рассчитываем коэффициенты уменьшения по ширине и высоте
$width_ratio = $original_width / $width;
$height_ratio = $original_height / $height;

// Рассчитываем коэффициент уменьшения изображения
$ratio = max($width_ratio, $height_ratio);

// Рассчитываем новые размеры изображения
$new_width = round($original_width / $ratio);
$new_height = round($original_height / $ratio);

// Копируем и изменяем размеры оригинального изображения на новое изображение
imagecopyresampled($new_image, $original, 0, 0, 0, 0, $new_width, $new_height, $original_width, $original_height);

// Сохраняем уменьшенное изображение в файл
imagejpeg($new_image, 'path/to/new/image.jpg');

// Освобождаем память
imagedestroy($original);
imagedestroy($new_image);


В этом примере мы используем функцию imagecopyresampled() для уменьшения размеров оригинального изображения до желаемых размеров, сохраняя его пропорции. Результат сохраняется в новый файл. Не забудьте освободить память после работы с изображениями.