Filtros de imagem com GD - Sépia, brilho, contraste, blur, etc
Prefácio
Sempre gostei de trabalhar com a biblioteca GD. Recentemente, durante algumas pesquisas, descobri que há um jeito de aplicar efeitos nas imagens, e é isso que veremos hoje.
Conceito
A função que utilizaremos é a imagefilter(). Com ela podemos aplicar diversos filtros nas imagens como sépia, inversão de cores, preto e branco, alteração de brilho e contraste, coloração, embaçar (emboss), blur e muitos outros. A seguir veremos alguns exemplos do que pode ser feito com esta função.
Mão na massa
Como eu gosto muito da Alemanha, resolvi pegar essa imagem de um castelo de lá para usar como exemplo.

Todos os códigos vistos abaixo assumem que a imagem já estará aberta, dentro da variável $img, conforme o código abaixo:
Código: Alternar entre o modo de cópia/destaque
<?php $img = imagecreatefromjpeg('imagem.jpg'); ?>
<?php
$img = imagecreatefromjpeg('imagem.jpg');
?>
Negativo
Para aplicar o filtro negativo, você deve utilizar a constante pré-definida chamada IMG_FILTER_NEGATE.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_NEGATE); ?>
<?php
imagefilter($img, IMG_FILTER_NEGATE);
?>
Resultado:

Preto e branco - Desaturar (Desaturate)
A constante se chama IMG_FILTER_GRAYSCALE. Com ela você pode desaturar completamente a imagem.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_GRAYSCALE); ?>
<?php
imagefilter($img, IMG_FILTER_GRAYSCALE);
?>

Brilho (Brightness)
É possível alterar o brilho da imagem utilizando a constante IMG_FILTER_BRIGHTNESS, mas para tanto será necessário passar mais um parâmetro, que irá indicar o nível na alteração do brilho.
Seguem dois exemplos, o primeiro aumentando o brilho e o segundo diminuindo.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_BRIGHTNESS, 80); // ... imagefilter($img, IMG_FILTER_BRIGHTNESS, -80); ?>
<?php
imagefilter($img, IMG_FILTER_BRIGHTNESS, 80);
// ...
imagefilter($img, IMG_FILTER_BRIGHTNESS, -80);
?>


Contraste
Utilizando a constante IMG_FILTER_CONTRAST você pode alterar o contraste. É possível atingir resultados bastante interessantes utilizando um valor negativo.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_CONTRAST, -50); ?>
<?php
imagefilter($img, IMG_FILTER_CONTRAST, -50);
?>

Colorir (Colorize)
Para aplicar uma camada de cor sobre a imagem, você pode utilizar a constante IMG_FILTER_COLORIZE.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_COLORIZE, 255,175,0); ?>
<?php
imagefilter($img, IMG_FILTER_COLORIZE, 255,175,0);
?>

Detecção de bordas (Edge detect)
Efeito bem maluco, que encontra as bordas da imagem e as desenha. A constante utilizada é a IMG_FILTER_EDGEDETECT.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_EDGEDETECT); ?>
<?php
imagefilter($img, IMG_FILTER_EDGEDETECT);
?>

Entalhe (Emboss)
Não confunda o "emboss" com o "embaçar, desfocar (blur)". Com a constante ... você consegue gerar um efeito bacana.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_EMBOSS); ?>
<?php
imagefilter($img, IMG_FILTER_EMBOSS);
?>

Gaussian Blur
Este comando dispensa comentários. A constante é IMG_FILTER_GAUSSIAN_BLUR.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_GAUSSIAN_BLUR); ?>
<?php
imagefilter($img, IMG_FILTER_GAUSSIAN_BLUR);
?>

Blur
Aplicar um Blur normal. Para tanto, utilize a constanteIMG_FILTER_SELECTIVE_BLUR.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_SELECTIVE_BLUR); ?>
<?php
imagefilter($img, IMG_FILTER_SELECTIVE_BLUR);
?>

Sketch
Com a constante IMG_FILTER_MEAN_REMOVAL é possível atingir um efeito conhecido como "Sketch", que é algo parecido com um rascunho ou algo passado apenas a lápis.
Surgem resultados bacanas quando você remove a saturação da imagem antes de aplicar este efeito.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_MEAN_REMOVAL); ?>
<?php
imagefilter($img, IMG_FILTER_MEAN_REMOVAL);
?>

Smooth
Aplique um filtro de suavização na imagem utilizando IMG_FILTER_SMOOTH.
Código: Alternar entre o modo de cópia/destaque
<?php imagefilter($img, IMG_FILTER_SMOOTH, 90); ?>
<?php
imagefilter($img, IMG_FILTER_SMOOTH, 90);
?>

Conclusão
A biblioteca GD é bastante completa. Muitos efeitos estão disponíveis e vai da imaginação de cada um aplicá-los como bem entender. É possível fazer muita coisa legal, mas sempre tomando cuidado para não estourar a memória do servidor.
Peço perdão a todos vocês pela demora em postar mais um tutorial, mas é que a minha vida está bastante corrida. Em breve terem muito mais tempo pra escrever... E trarei muitas novidades!
Mandem dúvidas e sugestões!
Um abraço e fiquem com Deus!
PHP levado a sério