Criando miniatura de imagem com PHP

Criando miniatura de imagem com PHP

Neste artigo você vai aprender como fazer o upload de uma imagem e gerar uma imagem em miniatura (thumbnail) usando PHP. A imagem que você vai utilizar pode ser nos formatos JPEG, PNG ou GIF.

Primeiro, vamos criar um formulário, para fazer o upload de nosso arquivo.

<form action="gravar.php" enctype="multipart/form-data" method="POST" name="form1">

<label>Foto</label><input name="foto" type="file" />

<input type="submit" value="Enviar" />

</form>

 

 

No parâmetro "action" informamos o nome da página que vamos criar, que vai receber o arquivo e gerar a miniatura. O method do formulário deve ser POST e você precisa acrescentar o enctype "multipart/form-data" para informar que está enviado arquivos.

No arquivo "gravar.php", vamos inserir primeiro a programação para gravar o arquivo numa pasta temporária. Não esqueça de criar a pasta no mesmo local onde o arquivo PHP for criado.

 

$nome_arquivo = "";

$carimbo = time();

$arquivo = isset($_FILES['foto']) ? $_FILES['foto'] : FALSE; 

if ($arquivo['name'] != ""){

$nome_arquivo=$carimbo."_".$arquivo['name'];

$diretorio = "nome_da_pasta_de_arquivos/"; 

$caminho=$diretorio.$carimbo."_".$nome_arquivo;

move_uploaded_file($arquivo['tmp_name'], $diretorio.$carimbo ."_".$arquivo['name']);

}

 

A funçao "time" vai puxar a data/hora atual, vamos utilizar este resultado para criar um prefixo que vai ser adicionado no começo do nome do arquivo.

Depois de gravar o arquivo, vamos gerar a minitatura. Nosso objetivo é gerar uma miniatura de 300 x 300 pixels.

Antes de gerar a miniatura, precisamos identificar o tipo de arquivo, para isso precisamos abrir o arquivo que foi enviado e vamos obter o MIME type do arquivo utilizando as funções "getimagesize" e "image_type_to_mime_type".

De acordo com o tipo de arquivo, a função para gerar a miniatura é diferente.

Para arquivos do tipo JPEG, utilizamos a função "imagejpeg". Se o arquivo for do tipo PNG, utilizamos a função imagepng. Por último, se o arquivo for GIF, utlizamos a funçãoimagegif;

if ($nome_arquivo != ""){

if (!file_exists('nome_da_pasta_de_arquivos/'.$nome_arquivo)) {

$diretorio = "nome_da_pasta_de_arquivos/"; 

$caminho=$diretorio.$nome_arquivo;

$caminho_thumb='nome_da_pasta_de_arquivos/thumb_'.$nome_arquivo;

list($width, $height, $type) = getimagesize($caminho);

$tipo_imagem = image_type_to_mime_type ($type);

$new_width = 300;

$new_height = 300;

$image_p = imagecreatetruecolor($new_width, $new_height);

if ($tipo_imagem == 'image/jpeg'){

$image = imagecreatefromjpeg($caminho);

imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

imagejpeg($image_p, $caminho_thumb, 70);

}

if ($tipo_imagem == 'image/png'){

$image = imagecreatefrompng($caminho);

imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

imagepng($image_p, $caminho_thumb, 0);

}

if ($tipo_imagem == 'image/gif'){

$image = imagecreatefromgif($caminho);

imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

imagegif($image_p, $caminho_thumb);

}

imagedestroy($image_p);

}

}

 

O resultado do código acima é gerar um novo arquivo com as dimensões de 300 x 300, preservando o arquivo original. O novo arquivo vai ser gravado na mesma pasta da imagem original, com o prefixo "thumb_" no nome.

 

Outros conteudos que podem ser de seu interesse

Cotação do dólar com PHP
23/08/2020PHP

Cotação do dólar com PHP

Como obter o valor do dólar através de uma API do Banco Central utilizando PHP

Saiba mais...
Listando arquivos com PHP
25/09/2022PHP

Listando arquivos com PHP

Veja as várias formas de listar arquivos com PHP

Saiba mais...
Converter arquivo texto em JSON com PHP
08/10/2019PHP

Converter arquivo texto em JSON com PHP

Aprenda uma forma simples de converter um arquivo texto em JSON usando PHP

Saiba mais...

Conteúdo sobre banco de dados sem complicação!


Warning: Cannot modify header information - headers already sent by (output started at /home/storage/f/7d/a9/dbins/public_html/blog/post.php:101) in /home/storage/f/7d/a9/dbins/public_html/blog/ga4_track.php on line 11