imagefilter

(PHP 5, PHP 7)

imagefilterAplica un filtro a una imagen

Descripción

imagefilter ( resource $image , int $filtertype [, int $arg1 [, int $arg2 [, int $arg3 [, int $arg4 ]]]] ) : bool

imagefilter() aplica el filtro dado por filtertype sobre la imagen image.

Parámetros

image

Un 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.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Historial de cambios

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.

Ejemplos

Ejemplo #1 Ejemplo de escala de grises con imagefilter()

<?php
$im 
imagecreatefrompng('dave.png');

if(
$im && imagefilter($imIMG_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($imIMG_FILTER_BRIGHTNESS20))
{
    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($imIMG_FILTER_COLORIZE02550))
{
    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($imIMG_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($im255 $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) * 2imagesy($logo1));

// Aplicar pixelación a cada instancia, con un tamaño de
// bloque de 3
imagefilter($logo1IMG_FILTER_PIXELATE3);
imagefilter($logo2IMG_FILTER_PIXELATE3true);

// Fusionar las diferencias a la imagen de salida
imagecopy($salida$logo10000imagesx($logo1) - 1imagesy($logo1) - 1);
imagecopy($salida$logo2imagesx($logo2), 000imagesx($logo2) - 1imagesy($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:

Salida del ejemplo : Pixelación con imagefilter()

Notas

Ver también

  • imageconvolution() - Aplicar una matriz de convolución de 3x3, usando coeficiente e índice