imagefilter

(PHP 5, PHP 7, PHP 8)

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:

arg1

arg2

arg3

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ónDescripció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($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');


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:

Salida del ejemplo : Pixelación con imagefilter()

Notas

Ver también

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