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

15 de Abril de 2015 - 11:01

Sua foto do perfil

Naldo

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

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