У меня есть PHP-скрипт, который изменяет размеры файлов .jpg, .gif и .png в ограничивающий прямоугольник.
$max_width = 500;
$max_height = 600;
$filetype = $_FILES["file"]["type"];
$source_pic = "img/" . $idnum;
if($filetype == "image/jpeg")
{
$src = imagecreatefromjpeg($source_pic);
} else if($filetype == "image/png")
{
$src = imagecreatefrompng($source_pic);
} else if($filetype == "image/gif")
{
$src = imagecreatefromgif($source_pic);
}
list($width,$height)=getimagesize($source_pic);
$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;
if( ($width <= $max_width) && ($height <= $max_height) )
{
$tn_width = $width;
$tn_height = $height;
} else if (($x_ratio * $height) < $max_height)
{
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
} else {
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}
$tmp = imagecreatetruecolor($tn_width,$tn_height);
imagecopyresampled($tmp,$src,0,0,0,0,$tn_width, $tn_height,$width,$height);
$destination_pic = "img/thumbs/" . $idnum . "thumb";
if($filetype == "image/jpeg")
{
imagejpeg($tmp,$destination_pic,80);
} else if($filetype == "image/png")
{
imagepng($tmp,$destination_pic,80);
} else if($filetype == "image/gif")
{
imagegif($tmp,$destination_pic,80);
}
imagedestroy($src);
imagedestroy($tmp);
Скрипт отлично работает с jpeg и gif, но при запуске на png файл будет поврежден.
Что-нибудь особенное, что мне нужно использовать при работе с png? Я никогда не работал с подобными вещами в PHP, поэтому я не очень знаком с ним.