A manipulação/geração de imagens no PHP é um recurso muito útil e versátil, que pode ser usado tanto para operações comuns como o redimensionamento / corte de imagens, quanto para operações mais complexas, como a criação de montagens, gifs animados e tratamento de fotos.
A biblioteca GD é a mais utilizada no php para essas operações, por já estar presente na maioria das instalações padrão de servidores por aí afora. Ela oferece muitos recursos interessantes, e apesar de ter limitações, serve para todas as operações básicas de manipulação de imagem: corte, redimensionamento, colagem, escrita com fontes true type, efeitos básicos para fotos, e geração de imagens diretamente para o browser (um arquivo .php se “transforma” em um jpg).
Para maiores informações e referência das funções da GD, acesse: http://www.php.net/manual/en/ref.image.php
Neste artigo você verá exemplos de utilização da GD para aplicar efeitos em fotos. Nos exemplos, utilizei a imagem “foto_exemplos.jpg”, no mesmo diretório do script, e joguei a saída diretamente para o browser, não salvando as alterações na imagem.
Brilho
No exemplo abaixo, aumentei o brilho da imagem em “50″. Para diminuir o brilho, basta passar um número negativo.

Brilho +50
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_BRIGHTNESS, 50))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
Contraste

contraste -50
O contraste funciona de maneira similar ao brilho, porém para aumentar o contraste é que você passa um número negativo. Um número positivo irá diminuir o contraste.
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_CONTRAST, -50))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
Filtro de Cor
O filtro COLORIZE permite a você aplicar um filtro de cor na imagem, passando os argumentos que definem a cor: R G B (red, green, blue), e mais um argumento opcional que define a transparência do filtro – de 0 a 127, onde 0 (o padrão) seria totalmente opaco e 127 totalmente transparente – que não fará diferença no resultado da imagem. No exemplo abaixo, usei 100% de verde e nenhuma transparência (R=0,G=255,B=0)

colorize
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_COLORIZE, 0, 255, 0))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
No exemplo abaixo, defini a transparência para 100, acrescentando “100″ na lista dos argumentos.

colorize green c/ alpha=100
Preto e Branco

preto e branco
<?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);
?>
Sépia
Para atingirmos o efeito de “Sepia”, aplicamos dois filtros. Primeiro deixamos a imagem preto e branco, depois aplicamos um ‘colorize’ no tom de sépia (amarelado).

sepia tone
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_GRAYSCALE))
{
imagefilter($img, IMG_FILTER_COLORIZE, 90, 60, 40);
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
Negativo

negativo
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_NEGATE))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>