Так часто вебмастера сталкиваются с проблемой автоматического изменения размера изображений, выводимых на сайте. Такая операция может пригодится всегда. Особенно, если у вас посещаемый портал. Размеры изображений требуется редактировать автоматически в разных случаях: начиная форумными аватарами и кончая превью-изображениями в интернет-магазине. Часто бывает, что функций CSS недостаточно для автоматического изменения размера изображений — тогда мы применяем PHP. В этом уроке мы познакомимся с обрезкой изображения на PHP.
Исходный код обрезки изображения PHP:
<?php /* $x_o и $y_o - координаты левого верхнего угла выходного изображения на исходном $w_o и h_o - ширина и высота выходного изображения */ function crop($image, $x_o, $y_o, $w_o, $h_o) { if (($x_o < 0) || ($y_o < 0) || ($w_o < 0) || ($h_o < 0)) { echo "Некорректные входные параметры"; return false; } list($w_i, $h_i, $type) = getimagesize($image); // Получаем размеры и тип изображения (число) $types = array("", "gif", "jpeg", "png"); // Массив с типами изображений $ext = $types[$type]; // Зная "числовой" тип изображения, узнаём название типа if ($ext) { $func = 'imagecreatefrom'.$ext; // Получаем название функции, соответствующую типу, для создания изображения $img_i = $func($image); // Создаём дескриптор для работы с исходным изображением } else { echo 'Некорректное изображение'; // Выводим ошибку, если формат изображения недопустимый return false; } if ($x_o + $w_o > $w_i) $w_o = $w_i - $x_o; // Если ширина выходного изображения больше исходного (с учётом x_o), то уменьшаем её if ($y_o + $h_o > $h_i) $h_o = $h_i - $y_o; // Если высота выходного изображения больше исходного (с учётом y_o), то уменьшаем её $img_o = imagecreatetruecolor($w_o, $h_o); // Создаём дескриптор для выходного изображения imagecopy($img_o, $img_i, 0, 0, $x_o, $y_o, $w_o, $h_o); // Переносим часть изображения из исходного в выходное $func = 'image'.$ext; // Получаем функция для сохранения результата return $func($img_o, $image); // Сохраняем изображение в тот же файл, что и исходное, возвращая результат этой операции } crop("image.jpg", 100, 100, 200, 50); // Вызываем функцию ?>
Код обрезки изображения PHP подробно прокомментирован, поэтому вам не составит труда разобраться в принципах работы этого PHP-скрипта. Еще раз поясню, зачем вам нужна обрезка изображений на PHP:
- Каскадные таблицы стилей могут исказить формат изображения
- Каскадные таблицы стилей только изменят размер выводимого изображения, но не его настящий размер
- Обрезка изображения с PHP решит эти проблемы. Изображение обрежется и будет выводиться его правильный формат
Отдельное спасибо за уроки © Русакову Михаилу
Добрый день! Не так давно начал изучать php поэтому такой вопрос. Есть форум в котором должны выводиться круглые картинки(аватарки), вот и не понятно как и где вызывать эту функцию что бы у всех кто добавляется в форум выводились круглые фото ну примерно 100х100. Есть такая конструкция вывод аватарок из базы не пойму где эту функцию применить . Подскажите пожалуйста!))