Atualizado em 01 de Abril de 2015

Redimensionar Imagem PNG com PHP

Olá pessoal,

Hoje vou começar uma série de quatro artigos falando sobre Redimensionamento de imagens. E no primeiro artigo desta série vamos ver Como Redimensionar Imagem PNG com PHP.

Para realizar o redimensionamento usamos basicamente quatro funções do PHP: imagecreatefrompng, imagecreatetruecolor, imagecopyresampled e imagepng.

Vamos ver o exemplo:

<?php
function redimencionarImagemPNG($imagem, $largura, $altura)
 {
  // Cria um identificador para nova imagem
  $imagem_original = imagecreatefrompng($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 = imagepng($imagem_tmp, 'imagem_nova.png');

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

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

echo redimencionarImagemPNG('imagem_teste.png', 300, 144);
?>

Veja como fica a imagem:

 Imagem de Exemplo

Então e isso pessoal, até o próximo artigo desta série.


Veja também: Redimensionar Imagem GIF com PHP
Veja também: Redimensionar Imagem JPG com PHP
Veja também: Função para Redimensionar Imagens


"Esta dica te ajudou de alguma forma?" Então ajude outras pessoas compartilhando este conteúdo com seus amigos! =)


Até a próxima.

Comentários

Sua foto do perfil

Charles Corrêa

Caro Mauricio

Boa Tarde

E se eu quisesse que o PNG com fundo transparente continuasse com o fundo transparente?

Pois no exemplo acima ele fica com o fundo preto

16 de Abril de 2015 - 13:39

Sua foto do perfil

Mauricio Programador

Olá Charles,

Você terá que adicionar mais três linhas de código abaixo da linha:

$imagem_tmp = imagecreatetruecolor($largura, $altura);

São elas:

imagesavealpha($imagem_tmp, true);
$cor_fundo = imagecolorallocatealpha($imagem_tmp, 0, 0, 0, 127);
imagefill($imagem_tmp, 0, 0, $cor_fundo);

Abraço.

23 de Abril de 2015 - 09:58

Sua foto do perfil

Diogo

Grande dica, Maurício!

15 de Abril de 2015 - 11:01

Sua foto do perfil

Naldo

Muito bom. E para redimensionar proporcionalmente? Por exemplo definir só a altura ou só a largura.

02 de Abril de 2015 - 10:15

Sua foto do perfil

Mauricio Programador

Olá Naldo,

Dai basta você fazer o calculo para criar a proporção adequada. Por exemplo:

$porcentagem_largura = ($largura_antiga/$largura);
$porcentagem_altura = ($altura_antiga/$altura);

if($porcentagem_altura > $porcentagem_largura)
{
$porcentagem = $porcentagem_altura;
}
else
{
$porcentagem = $porcentagem_largura;
}

$largura = ceil($largura_antiga/$porcentagem);
$altura = ceil($altura_antiga/$porcentagem);

Abraço.

06 de Abril de 2015 - 09:19

Sua foto do perfil

CHARLES CORRÊA

Nossa caiu como uma luva, estava estudando exatamente sobre isso em uma função de upload que estava desenvolvendo para meu projeto.

Valeu mesmo amigo, sucesso!

02 de Abril de 2015 - 01:06

NEWSLETTER

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

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER