Resize PNG image in PHP
try this:
$image = imagecreatefrompng ( $filename );$new_image = imagecreatetruecolor ( $width, $height ); // new wigth and heightimagealphablending($new_image , false);imagesavealpha($new_image , true);imagecopyresampled ( $new_image, $image, 0, 0, 0, 0, $width, $height, imagesx ( $image ), imagesy ( $image ) );$image = $new_image;// savingimagealphablending($image , false);imagesavealpha($image , true);imagepng ( $image, $filename );
see if this works
#upload de imagepublic function upImagem($imagem, $dir, $res, $id, $tam){ $arquivo = $imagem; $arq_nome = $arquivo['name']; $ext = $arquivo['type']; $nome=$this->RenImg($arquivo, $dir, $id, $tam); $imagem = $arquivo['tmp_name']; if($ext=='image/jpeg'){ $img = imagecreatefromjpeg($imagem); } elseif($ext=='image/png'){ $img = imagecreatefrompng($imagem); } elseif($ext=='image/gif'){ $img = imagecreatefromgif($imagem); } if(($ext=='image/png') or ($ext=='image/gif')){ list($x, $y) = getimagesize($arquivo['tmp_name']); } elseif($ext=='image/jpeg'){ $x = imagesx($img);//original height $y = imagesy($img);//original width } $altura = $res[1]; $largura = $res[0]; $nova = imagecreatetruecolor($largura,$altura); $preto = imagecolorallocate($nova, 0, 0, 0); if(($ext=='image/png') or ($ext=='image/gif')){ imagealphablending($nova , false); imagesavealpha($nova , true); } if($ext=='image/png'){ imagecolortransparent ($nova, $preto); imagecopymerge($img, $nova, 0, 0, 0, 0, imagesx($nova), imagesy($nova), 100); imagecopyresized($nova,$img,0,0,0,0,$largura,$altura, $x, $y ); } else { imagecopyresampled($nova,$img,0,0,0,0,$largura,$altura,$x,$y); } if($ext=='image/jpeg'){ imagejpeg($nova,$nome,99); } elseif($ext=='image/gif'){ imagealphablending($nova , false); imagesavealpha($nova , true); imagegif($nova,$nome,99); } elseif($ext=='image/png'){ imagealphablending($nova , false); imagesavealpha($nova , true); imagepng($nova,$nome); } imagedestroy($img); imagedestroy($nova);}#renames the imagepublic function RenImg($arq,$dir,$id,$tam){ $arq_nome = $arq['name']; $arq_nome2=str_replace('.jpg','',$arq['name']);//renomeia o arquivo $arq_nome2=str_replace('.png','',$arq_nome2);//renomeia o arquivo $arq_nome2=str_replace('.gif','',$arq_nome2);//renomeia o arquivo //$new_name = md5($arq_nome); $ext = $this->getExt($arq_nome); $nome = $dir.$id.$tam.'.jpg';//.'.'.$ext return $nome;}#capture the file extensionpublic function getExt($arq){ $ext = pathinfo($arq, PATHINFO_EXTENSION); return $ext;}