Это функция, которую я использую для изменения размера PNG, но для сохранения прозрачности, если это не помогает, скажите мне извлечь необходимые вам части:
function Resize($ImageFile,$OriginalFile)
{
$ext=basename($OriginalFile);
$ext=explode(".",$ext);
$ext=array_pop($ext);
$ext=strtolower($ext);
if ($ext=="jpg" or $ext=="jpeg" or $ext=="jpe")
$img=imagecreatefromjpeg($ImageFile);
elseif ($ext=="png")
$img=imagecreatefrompng($ImageFile);
elseif ($ext=="gif")
$img=imagecreatefromgif($ImageFile);
else
return false;
list($w,$h)=getimagesize($ImageFile);
$dstimg=imagecreatetruecolor(140,100);
imagealphablending($dstimg, false);
imagecopyresampled($dstimg,$img,0,0,0,0,140,100,$w,$h);
imagesavealpha($dstimg, true);
imagepng($dstimg,$ImageFile);
return true;
}