Наконец то я наскреб время написать в блог, давно не писал а руки чешутся. Сегодня я расскажу как изменить размер изображения при этом сохранив пропорции. Все очень просто и требует лишь библиотеки GD.Итак, мы имеем изображение example.jpg и хотим изменить его размер. Следует заметить что данный метод подходит только для JPG!
Пример №1. Изменяем изображение до нужной высоты.
<?php
# Определяем размер изображения
$size=GetImageSize ("example.jpg");
# Создаем новое изображение
$src=ImageCreateFromJPEG ("example.jpg");
# Присваиваем переменной значение ширины
$iw=$size[0];
# Присваиваем переменной значение высоты
$ih=$size[1];
# Делим высоту изображения на 200 ( 200 это нужная нам высота уменьшенного изображения )
получая тем самым коэффициент соотношения высоты исходного изображения с высотой конечного изображения
$koe=$ih/200;
# Делим ширину на коэффициент и округляем до целого, получая тем самым ширину нового изображения
$new_w=ceil ($iw/$koe);
# Создаем пустое изображения конечного изображения
$dst=ImageCreateTrueColor ($new_w, 200);
# Этой функцией копируем изображения в другое изменяя его размер
imagecopyresampled ($dst, $src, 0, 0, 0, 0, $new_w, 200, ImageSX ($src), ImageSY ($src));
# Сохраняем полученное изображение
ImageJPEG ($dst, "example_small.jpg", 100);
?>
Пример №2. Изменяем изображение до нужной ширины.
<?php
# Определяем размер изображения
$size=GetImageSize ("example.jpg");
# Создаем новое изображение
$src=ImageCreateFromJPEG ("example.jpg");
# Присваиваем переменной значение ширины
$iw=$size[0];
# Присваиваем переменной значение высоты
$ih=$size[1];
# Делим ширину изображения на 200 ( 200 это нужная нам ширина уменьшенного изображения )
получая тем самым коэффициент соотношения ширины исходного изображения с шириной конечного изображения
$koe=$iw/200;
# Делим высоту на коэффициент и округляем до целого, получая тем самым высоту нового изображения
$new_h=ceil ($ih/$koe);
# Создаем пустое изображения конечного изображения
$dst=ImageCreateTrueColor (200, $new_h);
# Этой функцией копируем изображения в другое изменяя его размер
ImageCopyResampled ($dst, $src, 0, 0, 0, 0, 200, $new_h, ImageSX ($src), ImageSY ($src));
# Сохраняем полученное изображение
ImageJPEG ($dst, "example_small.jpg", 100);
?>
Все довольно просто, только не следует забывать что данный метод не подходит для gif и png. Чуть позже я расскажу как изменять размер PNG изображений сохраняя пропорции, а на сегодня все =)
Добавить комментарий