项目里要求上传图片并进行缩放、压缩质量保存到服务器。
起初用php的image函数,结果jpg格式的图片保存正常,png格式的图片保存到服务器后损坏,大小变为0,方法如下:
if ($imageType == '.jpg') {
$src = @imagecreatefromjpeg ($url_tmp);
list($width,$height) = getimagesize($url_tmp);
$newwidth = 500;
$newheight = ($height/$width)*500;
$tmp = imagecreatetruecolor($newwidth,$newheight);
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
$output = imagejpeg($tmp, $url_tmp, 50);
imagedestroy($tmp);
} elseif ($imageType == '.jpg') {
$src = @imagecreatefrompng ($url_tmp);
list($width,$height) = getimagesize($url_tmp);
$newwidth = 500;
$newheight = ($height/$width)*500;
$tmp = imagecreatetruecolor($newwidth, $newheight);
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
$output = imagepng($tmp, $url_tmp, 50);//此行输出也为1,但保存到服务器就损坏了;后来发现对png图片用imagejpeg也能保存成功为png图片且未损坏。
imagedestroy($tmp);
}
if (!$output) {
echo '图片压缩失败';
}
后来更改方法,引入了ThinkImage图片处理库,解决了jpg和png图片压缩、压质的问题,具体见下面链接: