(PHP 5, PHP 7)
imagefilter — Aplica un filtro a una imagen
$image
, int $filtertype
[, int $arg1
[, int $arg2
[, int $arg3
[, int $arg4
]]]] ) : bool
imagefilter() aplica el filtro dado por
filtertype sobre la imagen image.
imageUn recurso image, es devuelto por una de las funciones de creación de imágenes, como imagecreatetruecolor().
filtertype
filtertype puede ser lo siguitente:
IMG_FILTER_NEGATE: Invierte todos los colores de
la imagen.
IMG_FILTER_GRAYSCALE: Convierte la imagen a
escala de grises.
IMG_FILTER_BRIGHTNESS: Cambia el brillo
de la imagen. Use arg1 para establecer el nivel de
brillo. El rango para el brillo es de -255 a 255.
IMG_FILTER_CONTRAST: Cambia el contraste de
la imagen. Use arg1 para establecer el nivel de
contraste.
IMG_FILTER_COLORIZE: Como
IMG_FILTER_GRAYSCALE, excepto que se puede especificar el
color. Use arg1, arg2 y
arg3 en la forma
red, green,
blue y arg4 para el
canal alpha. El rango de cada color es de 0 a 255.
IMG_FILTER_EDGEDETECT: Utiliza detección de borde para
resaltar los bordes de la imagen.
IMG_FILTER_EMBOSS: Pone en relieve la imagen.
IMG_FILTER_GAUSSIAN_BLUR: Pone borrosa la imagen usando
el método Gaussiano.
IMG_FILTER_SELECTIVE_BLUR: Pone borrosa la imagen.
IMG_FILTER_MEAN_REMOVAL: Utiliza eliminación media para
lograr un efecto "superficial".
IMG_FILTER_SMOOTH: Suaviza la imagen.
Use arg1 para esteblecer el nivel de suavidad.
IMG_FILTER_PIXELATE: Aplica el efecto de pixelación
a la imagen, use arg1 para establecer el tamaño de bloque
y arg2 para establecer el modo de efecto de pixelación.
arg1
IMG_FILTER_BRIGHTNESS: Nivel de brillo.
IMG_FILTER_CONTRAST: Nivel de contraste.
IMG_FILTER_COLORIZE: Valor del componente rojo.
IMG_FILTER_SMOOTH: Nivel de suavidad.
IMG_FILTER_PIXELATE: Tamaño de bloque en píxeles.
arg2
IMG_FILTER_COLORIZE: Valor del componente verde.
IMG_FILTER_PIXELATE: Si usar o no el efecto de pixelación
avanzado (por defecto a FALSE).
arg3
IMG_FILTER_COLORIZE: Valor del componente azul.
arg4
IMG_FILTER_COLORIZE: Canal alfa. Un valor
entre 0 y 127. 0 indica completamente opaco mientras que 127 indica
completamente transparente.
Devuelve TRUE en caso de éxito o FALSE en caso de error.
| Versión | Descripción |
|---|---|
| 5.3.0 |
Se añadió el soporete de pixelación (IMG_FILTER_PIXELATE).
|
| 5.2.5 |
Se añadió el soporte de alfa para IMG_FILTER_COLORIZE.
|
Ejemplo #1 Ejemplo de escala de grises 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 'La conversión a escala de grises falló.';
}
imagedestroy($im);
?>
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');
imagedestroy($im);
}
else
{
echo 'El cambio del brillo de la imagen falló.';
}
?>
Ejemplo #3 Ejemplo de coloración con imagefilter()
<?php
$im = imagecreatefrompng('philip.png');
/* R, G, B, así 0, 255, 0 es verde */
if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0))
{
echo 'Imagen sombreada a verde con éxito.';
imagepng($im, 'philip.png');
imagedestroy($im);
}
else
{
echo 'El sombreado a verde falló.';
}
?>
Ejemplo #4 Ejemplo de inversión de color con imagefilter()
<?php
// Define nuestra función negativo, así es portable para
// versiones de php sin imagefilter()
function negativo($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 && negativo($im))
{
echo 'Imagen convertida a colores negativos con éxtito.';
imagejpeg($im, 'kalle.jpg', 100);
imagedestroy($im);
}
else
{
echo 'La conversión a colores negativos falló.';
}
?>
Ejemplo #5 Ejemplo de pixelación con imagefilter()
<?php
// Cargar el logotipo de PHP, necesitamos crear dos instancias
// para mostrar las diferencias
$logo1 = imagecreatefrompng('./php.png');
$logo2 = imagecreatefrompng('./php.png');
// Crear la instancia de imagen que queremos para mostrar
// las diferencias
$salida = imagecreatetruecolor(imagesx($logo1) * 2, imagesy($logo1));
// Aplicar pixelación a cada instancia, con un tamaño de
// bloque de 3
imagefilter($logo1, IMG_FILTER_PIXELATE, 3);
imagefilter($logo2, IMG_FILTER_PIXELATE, 3, true);
// Fusionar las diferencias a la imagen de salida
imagecopy($salida, $logo1, 0, 0, 0, 0, imagesx($logo1) - 1, imagesy($logo1) - 1);
imagecopy($salida, $logo2, imagesx($logo2), 0, 0, 0, imagesx($logo2) - 1, imagesy($logo2) - 1);
imagedestroy($logo1);
imagedestroy($logo2);
// Imprimir las diferencias
header('Content-Type: image/png');
imagepng($salida);
imagedestroy($salida);
?>
El resultado del ejemplo sería algo similar a: