php无法正常保存png图片
在进行图片缩放时当保存图片为png时,会出现0字节,无法正常保存图片
例如下面代码:
//... ...
if ($ratio_w < 1 || $ratio_h < 1) {
//按最小比例缩放
$ratio = min($ratio_w, $ratio_h);
$inter_w = intval($w * $ratio);
$inter_h = intval($h * $ratio);
// 定义一个新的图像
$new_img = imagecreatetruecolor($inter_w, $inter_h);
imagecopyresampled($new_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h, $w, $h);
switch ($type) {
case IMAGETYPE_JPEG :
// 存储图像
imagejpeg($new_img, $dst_file, 100);
break;
case IMAGETYPE_PNG :
imagepng($new_img, $dst_file, 100);
break;
case IMAGETYPE_GIF :
imagegif($new_img, $dst_file, 100);
break;
default :
break;
}
}
后来仔细查了每个图片处理函数的手册,发现
imagejpeg的范围:从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。默认为 IJG 默认的质量值(大约 75)。
imagepng的范围:从0 (0代表不压缩) 到 9 (9文件最小,压缩最慢) 或者-1。为-1时,选择默认编译到zlib库中。默认为 0 。
imagegif没有范围参数
所以上面的imagepng和imagegif都使用错了