Atualizado em 15 de Abril de 2015

Função para Redimensionar Imagens

Olá pessoal,

No último artigo da série de redimensionamento de imagens com o PHP, vamos criar uma função que identifica automaticamente a extensão da imagem e já aplica as funções corretas de acordo com a mesma.

O nosso script segue o mesmo, apenas criamos um switch para definir qual método que o script deve executar, de acordo com o tipo de arquivo enviado.

Vamos a função:

<?php
function redimencionarImagem($imagem, $largura, $altura)
 {
  // Verifica extensão do arquivo
  $extensao = strrchr($imagem, '.');
  switch($extensao)
  {
   case '.png':
    $funcao_cria_imagem = 'imagecreatefrompng';
    $funcao_salva_imagem = 'imagepng';

    break;
   case '.gif':
    $funcao_cria_imagem = 'imagecreatefromgif';
    $funcao_salva_imagem = 'imagegif';

    break;
   case '.jpg':
    $funcao_cria_imagem = 'imagecreatefromjpeg';
    $funcao_salva_imagem = 'imagejpeg';

    break;
   default:
    return 'Erro. Tipo de arquivo não aceito';
    exit;

    break;
  }

  // Cria um identificador para nova imagem
  $imagem_original = $funcao_cria_imagem($imagem);

  // Salva o tamanho antigo da imagem
  list($largura_antiga, $altura_antiga) = getimagesize($imagem);

  // Cria uma nova imagem com o tamanho indicado
  // Esta imagem servirá de base para a imagem a ser reduzida
  $imagem_tmp = imagecreatetruecolor($largura, $altura);

  // Faz a interpolação da imagem base com a imagem original
  imagecopyresampled($imagem_tmp, $imagem_original, 0, 0, 0, 0, $largura, $altura, $largura_antiga, $altura_antiga);

  // Salva a nova imagem
  $resultado = $funcao_salva_imagem($imagem_tmp, "imagem_nova$extensao");

  // Libera memoria
  imagedestroy($imagem_original);
  imagedestroy($imagem_tmp);

  if($resultado)
  {
   return 'Imagem Reduzida';
  }
  else
  {
   return 'Erro!';
  }
 }

echo redimencionarImagem('imagem.png', 114, 45);
?>

Veja como fica a imagem:

 Imagem de Exemplo

Download do script Clique aqui.


Veja também: Redimensionar Imagem PNG com PHP
Veja também: Redimensionar Imagem GIF com PHP
Veja também: Redimensionar Imagem JPG com PHP


Não deixem de enviar seus comentários e suas sugestões para novos posts afinal o blog e de vocês.


E isso aí pessoal, até a próxima.

Comentários

Sua foto do perfil

Cezar

Boa noite Mauricio,
Como faço para enviar 2 imagens ou mais usando esse cód em um formulário.
Obrigado!

18 de Janeiro de 2016 - 17:37

Sua foto do perfil

Mauricio Programador

Olá Cezar,

Primeiro tem que colocar a propriedade enctype="multipart/form-data" na tag do form.

Depois colocar um input no formulário do tipo file com o nome file[]

E para receber este dados com o PHP:

$_FILES["file"]["tmp_name"][0]
$_FILES["file"]["tmp_name"][1]

assim por diante.

Abraço.

25 de Janeiro de 2016 - 14:45

Sua foto do perfil

Julião Kaiser

Maurício, achei SENSACIONAL essa função, e eu estava procurando algo há algum tempo.
Tomei a liberdade de inserir uma possibilidade de manter as proporções de qualquer imagem, inserindo no script um cálculo para a variável "nova_altura", como segue:
36 --> linha existente;
37 $altura=$altura_antiga/$largura_antiga*250;
Obs. a dimensão 250 pode, também vir em forma de parâmetro, de acordo com a vontade do usuário.
Espero ter contribuído.

15 de Junho de 2015 - 09:33

Sua foto do perfil

Mauricio Programador

Olá Julião,

Obrigado pela contribuição.

Abraço.

23 de Junho de 2015 - 09:58

Sua foto do perfil

Francisco

Testei a função aqui e deu tudo certo. Obrigado Mauricio por compartilhar mais este conhecimento.

26 de Abril de 2015 - 04:17

Sua foto do perfil

Berg

Olá Maurício tudo bom?, apesar de o script está comentado fiquei com dúvidas.

Não entendi esse trecho??$imagem_original = $funcao_cria_imagem($imagem); a segunda variável está com parenteses como se fosse uma função e qual a relação desta variável com a $imagem_original vc passa para ela o nome do arquivo ou só os metadados?

Os outros pontos entendi assim:
- Você pega o tamanho da imagem e joga na list para criação das variaveis de tamanho.
- cria uma imagem (vazia) temporária com o tamanho desejado.
- copia a imagem original para a temporária.
- cria a nova imagem com a função imagejpg (serve para criar em png?)
- destroy a imagem original e a temporária apagandos apenas da memória elas ainda existem.
- checa o resultado e traz uma mensagem.

No ponto da função imagedestroy ela tem a mesma função da função unlink?

O que entendi esta certo?

17 de Abril de 2015 - 19:12

Sua foto do perfil

Mauricio Programador

Olá Berg,

Esta variável contem o nome de uma função, que foi definido no switch, por isso ela se comporta como se fosse o nome de uma função.

Quanto aos pontos que você explanou estão corretos.

Quanto se a função imagejpg serve para png a respostar e não, estava errado ali no código já corrigi. Obrigado por me avisar.

Já se a função imagedestroy tem a mesma função do unlink, sim só que no caso desta função o seu uso e para imagens.

abraço.

23 de Abril de 2015 - 10:41

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER