Erika Focke
Sobre todas as coisas
Sobre todas as coisas
Jan 26th
Não existe uma função pronta para aplicar o efeito “sépia” (foto envelhecida) em imagens usando a GD no PHP, porém é bem fácil de conseguir esse efeito fazendo uma combinação de COLORIZE e GRAYSCALE :
<?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);
?>
Resultado – antes e depois:
Jan 26th
Continuando o post anterior, onde mostrei a aplicação dos filtros GRAYSCALE, BRIGHTNESS, CONTRAST e COLORIZE, vamos ver agora a aplicação dos outros filtros disponíveis na função imagefilter() da GD .
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.
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);
?>
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_EDGEDETECT))
{
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_GAUSSIAN_BLUR))
{
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_EMBOSS))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
O efeito desse blur é mais suave que o Gaussian.
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_SELECTIVE_BLUR))
{
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_MEAN_REMOVAL))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
Também funciona como uma espécie de Blur, porém nesse filtro você define a intensidade. Quanto maior o valor, menor é a intensidade do blur aplicado.
Passando o valor “0″ :
Passando o valor “10″ :
Passando o valor “-5″ :
<?php
$img = imagecreatefromjpeg("foto_exemplos.jpg");
if($img && imagefilter($img, IMG_FILTER_SMOOTH, 10))
{
header("Content-type: image/jpg");
imagejpeg($img);
}
else
{
echo "Ocorreu um erro.";
}
imagedestroy($img);
?>
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.
Jan 25th
Vamos então começar com o básico, que é utilizar a GD para criar thumbnails (miniaturas) de fotos.
Para isso, precisaremos criar uma função que calcule o tamanho proporcional da miniatura, de acordo com uma dada largura e altura máximas. Então, vamos à função:
function criaMiniatura($imagem,$destination,$larguraMax,$alturaMax)
{
$tamanho = getimagesize($imagem);
$largura = $tamanho[0];
$altura = $tamanho[1]
//agora vamos ao calculo da proporcao
if($largura > $larguraMax)
{
$largura = $larguraMax;
$altura = ($largura * $tamanho[1]) / $tamanho[0];
}
if($altura > $alturaMax)
{
$altura = $alturaMax;
$largura = ($tamanho[0] * $altura) / $tamanho[1];
}
//abrir a imagem original
$img = imagecreatefromjpeg($imagem);
//criamos uma nova imagem em branco, q sera a miniatura
$thumb = imagecreatetruecolor($largura, $altura);
//agora, copiamos a foto pra nova imagem
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $largura, $altura, $tamanho[0], $tamanho[1]);
//e agora eh soh salvar
imagejpeg($thumb,$destination,90);
}
Para utilizar a função:
criaMiniatura("foto.jpg","fotothumb.jpg",120,90);
A nova miniatura será salva no formato 120×90, com o nome “fotothumb.jpg” .
Jan 22nd
Este é apenas um post introdutório para preceder os posts que vou fazer sobre manipulação de imagens no PHP.
Há basicamente duas bibliotecas que podemos utilizar para mexer com imagens no PHP: GD, que geralmente já vem compilada por padrão na maioria das instalações e servidores web por aí afora, e a ImageMagick, que precisa ser instalada por fora, porém possui muito mais recursos do que a GD, além de ser mais rápida, na maioria dos casos.
Venho trabalhando com essas bibliotecas há alguns anos, procurando sempre criar ferramentas divertidas / inusitadas além das funcionalidades básicas para o dia-a-dia (criar thumbnails, crop de imagem etc). Isso deu origem aos meus sites de montagens de fotos online (semfrescura.net e fotomontagens.net ) .
Vou começar a documentar aqui no blog meus testes e compartilhar um pouco da minha experiência no assunto, que eu adoro. Quando comecei a mexer com essas bibliotecas, não havia muito material disponível na net, e hoje ainda é pouco o que se encontra principalmente a respeito da ImageMagick. Espero que ajude alguém!