php无法正常保存png图片

  • Jesse
  • 2017-03-10 15:38:00
  • 523

在进行图片缩放时当保存图片为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没有范围参数

所以上面的imagepngimagegif都使用错了