(PHP 5, PHP 7, PHP 8)
imagefilter — Aplica un filtro a una imagen
imagefilter() aplica el filtro dado
filter sobre la image.
imageUn objeto GdImage, retornado por una de las funciones de creación de imágenes, como imagecreatetruecolor().
filter
filter puede ser uno de los siguientes:
IMG_FILTER_NEGATE : Invierte todos los colores de
la imagen.
IMG_FILTER_GRAYSCALE : Convierte la imagen a
niveles de gris cambiando las componentes roja, verde y azul a su
suma ponderada utilizando los mismos coeficientes que el cálculo luma REC.601 (Y').
Las componentes alfa se conservan. Para imágenes de paleta, el
resultado puede ser diferente debido a las limitaciones de la paleta.
IMG_FILTER_BRIGHTNESS : Modifica el brillo
de la imagen. Utilice args para definir el nivel de
brillo. El rango de brillo está entre -255 y 255.
IMG_FILTER_CONTRAST : Modifica el contraste de
la imagen. Utilice args para definir el nivel de
contraste.
IMG_FILTER_COLORIZE : similar a
IMG_FILTER_GRAYSCALE, excepto que es posible especificar el
color. Utilice args, arg2 y
arg3 en forma de
red, green,
blue y arg4 para el canal
alpha. El rango de cada color está entre 0 y 255.
IMG_FILTER_EDGEDETECT : Utiliza la detección de bordes para
resaltar los bordes de la imagen.
IMG_FILTER_EMBOSS : Permite embosar la imagen.
IMG_FILTER_GAUSSIAN_BLUR : Desenfoca la imagen utilizando el
método gaussiano.
IMG_FILTER_SELECTIVE_BLUR : Desenfoca la imagen.
IMG_FILTER_MEAN_REMOVAL : Utiliza la supresión de la media
para obtener un efecto "croquis".
IMG_FILTER_SMOOTH : Hace la imagen más suave.
Utilice args para definir el nivel de suavizado.
IMG_FILTER_PIXELATE : Aplica un efecto de pixeles a
la imagen, utilice args para definir el tamaño del bloque
y arg2 para definir el modo de efecto de pixeles.
IMG_FILTER_SCATTER : Aplica un efecto de dispersión
a la imagen, utilice args y
arg2 para definir la intensidad del efecto y
arg3 para aplicar el efecto solo
sobre ciertos colores de píxeles.
args
IMG_FILTER_BRIGHTNESS : Nivel de brillo.
IMG_FILTER_CONTRAST : Nivel de contraste.
IMG_FILTER_COLORIZE : Value of red component.
IMG_FILTER_SMOOTH : Nivel de suavizado.
IMG_FILTER_PIXELATE : Tamaño del bloque en píxeles.
IMG_FILTER_SCATTER : Nivel de sustracción del efecto.
No debe ser superior o igual al nivel de adición definido con
arg2.
arg2
IMG_FILTER_COLORIZE : Value of green component.
IMG_FILTER_PIXELATE : Uso o no del efecto de pixeles
avanzado (el valor por omisión es false).
IMG_FILTER_SCATTER : Nivel de adición del efecto.
arg3
IMG_FILTER_COLORIZE : Value of blue component.
IMG_FILTER_SCATTER : Array opcional de valores de color indexados
para aplicar el efecto.
arg4
IMG_FILTER_COLORIZE canal Alpha, un valor
entre 0 y 127. 0 indica opacidad total mientras que 127 indica transparencia total.
Genera un ValueError
si sub o plus provoca un desbordamiento o
un subdesbordamiento con el IMG_FILTER_SCATTER filter.
| Versión | Descripción |
|---|---|
| 8.4.0 |
Genera ahora un ValueError
si sub o plus provoca un desbordamiento o
un subdesbordamiento con el IMG_FILTER_SCATTER filter.
|
| 8.0.0 |
image expects a GdImage
instance now; previously, a valid gd resource was expected.
|
| 7.4.0 |
Se añadió el soporte para la dispersión (IMG_FILTER_SCATTER).
|
Ejemplo #1 Ejemplo de niveles de gris con imagefilter()
<?php
$im = imagecreatefrompng('dave.png');
if($im && imagefilter($im, IMG_FILTER_GRAYSCALE))
{
echo 'Imagen convertida a escala de grises.';
imagepng($im, 'dave.png');
}
else
{
echo 'Conversión a escala de grises fallida.';
}
?>
Ejemplo #2 Ejemplo de brillo con imagefilter()
<?php
$im = imagecreatefrompng('sean.png');
if($im && imagefilter($im, IMG_FILTER_BRIGHTNESS, 20))
{
echo 'Brillo de la imagen cambiado.';
imagepng($im, 'sean.png');
}
else
{
echo 'Cambio de brillo fallido.';
}
?>
Ejemplo #3 Ejemplo de colorización con imagefilter()
<?php
$im = imagecreatefrompng('philip.png');
/* R, G, B, así que 0, 255, 0 es verde */
if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0))
{
echo 'Imagen teñida de verde con éxito.';
imagepng($im, 'philip.png');
}
else
{
echo 'Teñido de verde fallido.';
}
?>
Ejemplo #4 Ejemplo de negativo con imagefilter()
<?php
// Define la función negate para que sea portable para
// versiones de php sin 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 'Imagen convertida a colores negativos con éxito.';
imagejpeg($im, 'kalle.jpg', 100);
}
else
{
echo 'Conversión a colores negativos fallida.';
}
?>
Ejemplo #5 Ejemplo de pixeles con imagefilter()
<?php
// Carga el logo PHP, debemos crear dos instancias
// para ver las diferencias
$logo1 = imagecreatefrompng('./php.png');
$logo2 = imagecreatefrompng('./php.png');
// Creación de la instancia de imagen sobre la cual queremos
// ver las diferencias
$output = imagecreatetruecolor(imagesx($logo1) * 2, imagesy($logo1));
// Aplica el efecto de pixeles a cada instancia con un
// tamaño de bloque de 3
imagefilter($logo1, IMG_FILTER_PIXELATE, 3);
imagefilter($logo2, IMG_FILTER_PIXELATE, 3, true);
// Fusiona las diferencias sobre la imagen de salida
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);
// Muestra las diferencias
header('Content-Type: image/png');
imagepng($output);
?>Resultado del ejemplo anterior es similar a :
Ejemplo #6 Ejemplo de dispersión con imagefilter()
<?php
// Carga la imagen
$logo = imagecreatefrompng('./php.png');
// Aplica un efecto de dispersión muy suave a la imagen
imagefilter($logo, IMG_FILTER_SCATTER, 3, 5);
// Muestra la imagen con el efecto de dispersión
header('Content-Type: image/png');
imagepng($logo);
?>Resultado del ejemplo anterior es similar a :
Nota: El resultado de
IMG_FILTER_SCATTERsiempre es aleatorio.