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:

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

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

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

Diogo
15 de Abril de 2015 - 11:01

Naldo
02 de Abril de 2015 - 10:15

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

CHARLES CORRÊA
02 de Abril de 2015 - 01:06