imagefilter
(PHP 5, PHP 7)
imagefilter — Применяет фильтр к изображению
Описание
$image
, int $filtertype
, int $arg1
= ?
, int $arg2
= ?
, int $arg3
= ?
, int $arg4
= ?
) : bool
imagefilter() применяет заданный фильтр
filtertype
к изображению image
.
Список параметров
-
image
-
Ресурс изображения, возвращаемый одной из функций создания изображений, например, такой как imagecreatetruecolor().
-
filtertype
-
filtertype
может быть одним из следующих:-
IMG_FILTER_NEGATE
: Инвертирует все цвета изображения. -
IMG_FILTER_GRAYSCALE
: Преобразует цвета изображения в градации серого путем преобразования компонент красного, зеленого и синего в их сумму с учетом весов, таких же как при вычислении яркости (Y') по REC.601. Альфа-канал сохраняется. Для изображений, использующих палитру, результат может отличаться в виду ограничений, накладываемых палитрой. -
IMG_FILTER_BRIGHTNESS
: Изменяет яркость изображения. Используйте аргументarg1
для задания уровня яркости. Диапазон яркостей от -255 до 255. -
IMG_FILTER_CONTRAST
: Изменяет контрастность изображения. Используйте аргументarg1
для задания уровня контрастности. -
IMG_FILTER_COLORIZE
: То же, что иIMG_FILTER_GRAYSCALE
, за исключением того, что можно задать цвет. Используйте аргументыarg1
,arg2
иarg3
для указания каналовred
,green
,blue
, аarg4
дляalpha
канала. Диапазон для каждого канала цвета от 0 до 255. -
IMG_FILTER_EDGEDETECT
: Использует определение границ для их подсветки. -
IMG_FILTER_EMBOSS
: Добавляет рельеф. -
IMG_FILTER_GAUSSIAN_BLUR
: Размывает изображение по методу Гаусса. -
IMG_FILTER_SELECTIVE_BLUR
: Размывает изображение. -
IMG_FILTER_MEAN_REMOVAL
: Использует усреднение для достижения эффекта "эскиза". -
IMG_FILTER_SMOOTH
: Делает границы более плавными, а изображение менее четким. Используйте аргументarg1
для задания уровня гладкости. -
IMG_FILTER_PIXELATE
: Применяет эффект пикселирования. Используйте аргументarg1
для задания размера блока и аргументarg2
для задания режима эффекта пикселирования. -
IMG_FILTER_SCATTER
: Применяет эффект рассеивания к изображению, используйтеarg1
иarg2
для определения силы эффекта и дополнительноarg3
для применения только к выбранным цветам пикселей.
-
-
arg1
-
-
IMG_FILTER_BRIGHTNESS
: Уровень яркости. -
IMG_FILTER_CONTRAST
: Уровень контрастности. -
IMG_FILTER_COLORIZE
: Значение красного компонента цвета. -
IMG_FILTER_SMOOTH
: Уровень сглаживания. -
IMG_FILTER_PIXELATE
: Размер блока в пикселах. -
IMG_FILTER_SCATTER
: Уровень уменьшения эффекта. Не должен быть больше или равен уровню добавления эффекта, установленному с помощьюarg2
.
-
-
arg2
-
-
IMG_FILTER_COLORIZE
: Значение зеленого компонента цвета. -
IMG_FILTER_PIXELATE
: Использовать усовершенствованный эффект пикселирования или нет (по умолчаниюfalse
). -
IMG_FILTER_SCATTER
: Уровень добавления эффекта.
-
-
arg3
-
-
IMG_FILTER_COLORIZE
: Значение синего компонента цвета. -
IMG_FILTER_SCATTER
: Необязательный массив значений индексации цвета для применения эффекта.
-
-
arg4
-
-
IMG_FILTER_COLORIZE
: Альфа канал, значение между 0 и 127. 0 означает непрозрачность, 127 соответствует абсолютной прозрачности.
-
Возвращаемые значения
Возвращает true
в случае успешного завершения или false
в случае возникновения ошибки.
Список изменений
Версия | Описание |
---|---|
7.4.0 |
Добавлена поддежка рассеивания (IMG_FILTER_SCATTER ).
|
Примеры
Пример #1 Пример использования imagefilter() с фильтром grayscale
<?php
$im = imagecreatefrompng('dave.png');
if($im && imagefilter($im, IMG_FILTER_GRAYSCALE))
{
echo 'Изображение преобразовано к градациям серого.';
imagepng($im, 'dave.png');
}
else
{
echo 'Преобразование не удалось.';
}
imagedestroy($im);
?>
Пример #2 Пример использования imagefilter() с фильтром яркости
<?php
$im = imagecreatefrompng('sean.png');
if($im && imagefilter($im, IMG_FILTER_BRIGHTNESS, 20))
{
echo 'Яркость изображения изменена.';
imagepng($im, 'sean.png');
imagedestroy($im);
}
else
{
echo 'Изменить яркость не удалось.';
}
?>
Пример #3 Пример использования imagefilter() с фильтром colorize
<?php
$im = imagecreatefrompng('philip.png');
/* R, G, B, so 0, 255, 0 is green */
if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0))
{
echo 'Изображение преобразовано к оттенкам зеленого.';
imagepng($im, 'philip.png');
imagedestroy($im);
}
else
{
echo 'Преобразование не удалось.';
}
?>
Пример #4 Пример использования imagefilter() с фильтром negate
<?php
// Определим нашу функцию, которую можно использовать в PHP
// без imagefilter()
function negate($im)
{
if(function_exists('imagefilter'))
{
return imagefilter($im, IMG_FILTER_NEGATE);
}
for($x = 0; $x < imagesx($im); ++$x)
{
for($y = 0; $y < imagesy($im); ++$y)
{
$index = imagecolorat($im, $x, $y);
$rgb = imagecolorsforindex($index);
$color = imagecolorallocate($im, 255 - $rgb['red'], 255 - $rgb['green'], 255 - $rgb['blue']);
imagesetpixel($im, $x, $y, $color);
}
}
return(true);
}
$im = imagecreatefromjpeg('kalle.jpg');
if($im && negate($im))
{
echo 'Изображение инвертировано успешно.';
imagejpeg($im, 'kalle.jpg', 100);
imagedestroy($im);
}
else
{
echo 'Инвертировать изображение не удалось.';
}
?>
Пример #5 Пример использования imagefilter() с фильтром pixelate
<?php
// загрузка PHP логотипа, нам нужно 2 штуки
// для сравнения
$logo1 = imagecreatefrompng('./php.png');
$logo2 = imagecreatefrompng('./php.png');
// подопытный экземпляр
$output = imagecreatetruecolor(imagesx($logo1) * 2, imagesy($logo1));
// Применение пикселирования к каждому изображению с размером блока в 3 пиксела
imagefilter($logo1, IMG_FILTER_PIXELATE, 3);
imagefilter($logo2, IMG_FILTER_PIXELATE, 3, true);
// Совмещение различий в выходном изображении
imagecopy($output, $logo1, 0, 0, 0, 0, imagesx($logo1) - 1, imagesy($logo1) - 1);
imagecopy($output, $logo2, imagesx($logo2), 0, 0, 0, imagesx($logo2) - 1, imagesy($logo2) - 1);
imagedestroy($logo1);
imagedestroy($logo2);
// Вывод различий
header('Content-Type: image/png');
imagepng($output);
imagedestroy($output);
?>
Результатом выполнения данного примера будет что-то подобное:
Пример #6 Пример использования imagefilter() с фильтром scatter
<?php
// Загрузка изображения
$logo = imagecreatefrompng('./php.png');
// Применение очень мягкого эффекта рассеивания к изображению
imagefilter($logo, IMG_FILTER_SCATTER, 3, 5);
// Вывов изображения с эффектом рассеивания
header('Content-Type: image/png');
imagepng($logo);
imagedestroy($logo);
?>
Результатом выполнения данного примера будет что-то подобное:
Примечания
Замечание: Результат
IMG_FILTER_SCATTER
всегда случайный.
Смотрите также
- imageconvolution() - Наложение искривляющей матрицы 3х3, используя коэффициент и смещение