PHP/Обработка и создание изображений

Материал из Викиверситета
< 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 на экран.


Пример(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); // очистка памяти
?>

Упражнения[править]

1 Какая функция предоставляет возможность вывести изображение на экран?

imagecreatefromjpeg()
imagejpeg()
IMG_FILTER_GRAYSCALE
imagefilter()
IMG_FLIP_VERTICAL
imageflip()
getimagesize()

2 Какая функция предоставляет возможность получить ширину изображения?

imagecreatefromjpeg()
imagejpeg()
IMG_FILTER_GRAYSCALE
imagefilter()
IMG_FLIP_VERTICAL
imageflip()
getimagesize()

3 Какой фильтр функции imagefilter() нужно использовать, чтобы применить эффект пикселизации к изображению?

IMG_FILTER_GRAYSCALE
IMG_FILTER_BRIGHTNESS
IMG_FILTER_PIXELATE
IMG_FLIP_HORIZONTAL

4 Что бы Вы изменили в данном скрипте?

<?php
$im = imagecreatefromjpeg("./cat.jpg");
$info   = getimagesize($im);
$width  = $info[1]; 
?>

Переименовал(а) бы переменную $width
Использовал(а) бы нулевой элемент массива, не изменяя имя переменной
Убрал(а) бы знак $ при переменной width
Если версия PHP ниже PHP 8.0.0 использовал(а) бы функцию imagedestroy()

5 Сколько обязательных параметров имеет функция getimagesize()?

1
2
3
4