(PHP 5)
imagefilter — Aplica un filtro a una imagen
imagefilter() aplica el filtro filtertype dado sobre image.
Un recurso image, es devuelto por una de las funciones de creación de imágenes, como imagecreatetruecolor().
filtertype puede ser uno de los siguitentes:
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. |
Example #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);
?>
Example #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ó.';
}
?>
Example #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ó.';
}
?>
Example #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ó.';
}
?>
Example #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:
Note: Esta función sólo está disponible si PHP fue compilado con la versión incluida de GD library.