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

Criar PDF com PHP
22/11/2020PHP

Criar PDF com PHP

Um exemplo de como criar um PDF de forma fácil usando PHP

Saiba mais...
Máscaras para CPF, CNPJ e outros tipos de dados com PHP
23/05/2021PHP

Máscaras para CPF, CNPJ e outros tipos de dados com PHP

Neste artigo você vai ver exemplos de como aplicar máscaras em dados utilizando PHP

Saiba mais...
Como conseguir emprego na área de tecnologia da informação
25/04/2021PHP

Como conseguir emprego na área de tecnologia da informação

Tudo o que você precisa saber para ir atrás de seu primeiro emprego

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