Erika Focke
Sobre todas as coisas
Sobre todas as coisas
Jan 25th
Neste post irei mostrar como podemos aplicar efeitos e filtros em imagens utilizando a lib GD no PHP. Iremos usar basicamente a função “imagefilter”, que nos permite aplicar vários efeitos como preto e branco, mexer no brilho e contraste, etc.
Para não deixar o post gigantesco, irei dividí-lo em partes. Nesta primeira parte, teremos os efeitos: Preto e Branco, Brilho, Contraste e Colorize.
Nos exemplos a seguir você verá do lado esquerdo a imagem original, e do lado direito o resultado após a aplicação do filtro. O código vem logo abaixo.
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_GRAYSCALE))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_BRIGHTNESS, 40))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
Obs. O terceiro argumento aceita um valor positivo (para aumentar o brilho) ou negativo (para diminuir o brilho).
O contraste tem uma pequena diferença em se tratando dos valores, pois para aumentar o contraste passamos um valor negativo, e para diminuir o contraste o valor deve ser positivo. O exemplo abaixo usa o valor “40″ no filtro IMG_FILTER_CONTRAST :
Já o exemplo abaixo utiliza o valor ” -40 ” como parâmetro, e aí sim, o contraste é aumentado:
Vamos ao código:
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_CONTRAST, -40))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
Este filtro é bem similar ao “grayscale”, sendo que você especifica a cor que deseja aplicar na imagem. Exemplos abaixo:
Vamos ao código (a cor deve ser passada em hexa correspondente aos valores RGB)
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_COLORIZE, 0, 139, 139))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
O filtro “IMG_FILTER_COLORIZE” aceita ainda um outro argumento, que corresponde ao canal ALPHA, ou seja, da transparência – vai de 0 a 127, onde “0″ é totalmente opaco (não vai fazer diferença) e “127″ é totalmente transparente (o efeito não vai aparecer, a foto vai ficar como a original). Você pode amenizar o efeito da cor usando esse canal. Exemplo abaixo, com a mesma cor usada anteriormente (verde cyan – 0,139,139), agora com transparência (90):
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_COLORIZE, 0, 139, 139,90))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
No próximo post continuarei com os outros filtros.