Crie seu próprio Instagram com PHP

Olá pessoal! Hoje mostrarei como fazer uma edição e tratamento básico de imagens com PHP, para quem não sabe o PHP possui uma extensão dedicada para trabalhar com entidades gráficas, a php_gd2, consequentemente para este tutorial vamos precisar desta extensão habilitada e do PHP na versão 5.5 ou superior.
Para começar então precisamos carregar a imagem, isto é algo extremamente fácil de fazer usando a extensão do php_gd2 e existe métodos prontos para isso:
$imagem = imagecreatefromjpeg($caminho_para_imagem);

Ou se preferir usar outras extensões de imagens utilize a tabela abaixo:

(JPEG)$imagem = imagecreatefromjpeg('caminhoparaimagem');
(PNG) $imagem = imagecreatefrompng('caminhoparaimagem');
(GIF) $imagem = imagecreatefromgif('caminhoparaimagem');
(WEBP)$imagem = imagecreatefromwebp('caminhoparaimagem');

Isso carrega nossa imagem na variável “$imagem”, para teste você pode jogar a imagem no navegador da seguinte forma:

header('Content-type: image/jpeg');
imagejpeg($imagem);

IMPORTANTE! É necessário colocar o “Content-type” pois do contrário o navegador não interpretará corretamente o conteúdo e ele pode ou não ser mostrado como deve, além disso deve corresponder ao tipo de imagem usada.

Obs.: Você pode salvar a imagem gerada passando um segundo parâmetro para o método imagejpeg() com o caminho e nome da imagem. Ex.: imagepng($imagem,’imagem2.jpg’);

Para este tutorial usarei uma imagem de um elePHPant que achei no google 🙂

Com isso ao acessar a página pelo navegador a imagem deve aparecer, mas agora vamos tornar as coisas mais interessantes, aplicando filtros às imagens com o método imagefilter, veja abaixo alguns filtros:

 

imagefilter($imagem, IMG_FILTER_NEGATE);
imagefilter($imagem, IMG_FILTER_BRIGHTNESS, 150);

 

imagefilter($imagem, IMG_FILTER_COLORIZE, 255,0,0);

 

imagefilter($imagem, IMG_FILTER_CONTRAST, -255);

 

imagefilter($imagem, IMG_FILTER_GRAYSCALE);

Obs.: Os filtros podem ser acumulados chamando um ou mais. Também podemos recuperar o tamanho da imagem com “imagesx()” para largura e “imagesy()” para altura, para mostrar esse exemplo mostrarei junto com o método imagecrop() que retorna uma nova imagem com os parâmetros passados, segue:

$imagem = imagecrop($imagem, array('x'=((imagesx($imagem)/2)-150),'y'=((imagesy($imagem)/2)-100),'width'=150,'height'=150));

 

resultado do imgcrop()

Além disso, o PHP possui o método imagecropauto que também faz o recorte da imagem porém de forma mais inteligente, como por exemplo você pode recortar retirando todo o fundo que for da cor branca ou preta, da seguinte forma:

imagefilter($imagem, IMG_FILTER_CONTRAST, -255);
$imagem = imagecropauto($imagem,IMG_CROP_WHITE);

Para demostrar utilizei a imagem do nosso amigo elePHPant aumentando o contraste da imagem para que o fundo que é cinza na imagem original vire branco e assim posso usar o método para filtrar a área que possua algo na imagem, no caso nosso elePHPant.

resulta de imagecropauto()

Uma aplicação prática da utilização desses métodos seria o tratamento de imagens para leitura com OCR (Optical Character Read), assim você pode melhorar a qualidade e precisão da leitura do algoritmo.