PHP/Обработка и создание изображений
Вывод изображения
[править]Чтобы вывести изображение на экран, сначала необходимо по имени файла получить идентификатор файла с изображением. Открыть файл в формате JPEG можно с помощью функции imagecreatefromjpeg($filename), где параметр $filename — это путь к файлу. Эта функция создания изображений imagecreatefromjpeg() возвращает параметр $image. Передавая этот параметр $image в функцию imagejpeg($image), выведем изображение на экран.
Пусть файл, который требуется вывести на экран, находится в одной директории со скриптом и имеет название cat.jpg. Тогда приведенный в примере скрипт отработает корректно и выполнит поставленную задачу.
Пример:
<?php
$im = imagecreatefromjpeg("./cat.jpg"); //получаем идентификатор изображения
header('content-type: image/jpeg'); // устанавливаем тип содержимого
imagejpeg($im); // вывод изображения на экран
imagedestroy($im); // очистка памяти
?>
Примечание: Использование функции imagedestroy($im) имеет смысл, если версия PHP ниже PHP 8.0.0. Данная функция закрывает ресурс.
Фильтры
[править]Применить фильтр к изображению позволяет функция imagefilter($image, $filter), параметр $image — это объект, возвращаемый функцией создания изображений. Параметр $filter может иметь следующие значения:
Значение $filter | Описание |
---|---|
IMG_FILTER_NEGATE | инвертирует все цвета изображения |
IMG_FILTER_GRAYSCALE | преобразует изображение в оттенки серого |
IMG_FILTER_BRIGHTNESS | изменение яркости изображения |
IMG_FILTER_CONTRAST | изменение контрастности изображения |
IMG_FILTER_COLORIZE | подобно IMG_FILTER_GRAYSCALE |
IMG_FILTER_EDGEDETECT | использует обнаружение краев, чтобы выделить края на изображении |
IMG_FILTER_EMBOSS | тиснение изображения |
IMG_FILTER_GAUSSIAN_BLUR | размывает изображение |
IMG_FILTER_SELECTIVE_BLUR | подобно IMG_FILTER_GAUSSIAN_BLUR |
IMG_FILTER_MEAN_REMOVAL | использует среднее удаление для достижения «схематичного» эффекта |
IMG_FILTER_SMOOTH | делает изображение более гладким |
IMG_FILTER_PIXELATE | применение эффекта пикселизации к изображению |
IMG_FILTER_SCATTER | применяет эффект рассеяния к изображению |
Пример(IMG_FILTER_GRAYSCALE):
<?php
$im = imagecreatefromjpeg("./cat.jpg"); // получаем идентификатор изображения
imagefilter($im, IMG_FILTER_GRAYSCALE); // преобразуем изображение в оттенки серого
header('content-type: image/jpeg'); // устанавливаем тип содержимого
imagejpeg($im); // вывод изображения на экран
imagedestroy($im); // очистка памяти
?>
Зеркальное отражение
[править]Функция imageflip($image,$mode) переворачивает изображение, заданное параметром $image, используя режим $mode
Значение $mode | Описание |
---|---|
IMG_FLIP_HORIZONTAL | Переворачивает изображение по горизонтали. |
IMG_FLIP_VERTICAL | Переворачивает изображение по вертикали. |
IMG_FLIP_BOTH | Переворачивает изображение как по горизонтали, так и по вертикали. |
Пример(IMG_FLIP_HORIZONTAL):
<?php
$im = imagecreatefromjpeg("./cat.jpg"); // получаем идентификатор изображения
imageflip($im, IMG_FLIP_HORIZONTAL); // зеркалим изображение по горизонтали
header('content-type: image/jpeg'); // устанавливаем тип содержимого
imagejpeg($im); // вывод изображения на экран
imagedestroy($im); // очистка памяти
?>
Получение размеров изображения
[править]С помощью функции getimagesize($image) получим ширину и высоту изображения. Параметр $image — это объект, возвращаемый функцией создания изображений. Функция getimagesize($image) вернёт массив, где нулевой элемент соответствует ширине изображения, а первый элемент — высоте изображения.
Пример:
<?php
$im = imagecreatefromjpeg("./cat.jpg"); // получаем идентификатор изображения
$info = getimagesize($im); // получение информации о файле
$width = $info[0]; // ширина изображения
$height = $info[1]; // высота изображения
imagedestroy($im); // очистка памяти
?>
Упражнения
[править]