(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:
