PHP:imagepng()创建破碎的图像

Ori*_*ter 0 php png image

我在创建PNG图像的thumnail时遇到问题.

这有效:

    $src = imagecreatefromjpeg("http://www.gaze.se/".$folder.$filename);
    $rootfolder = $_SERVER['DOCUMENT_ROOT'] ;
    $tmp = imagecreatetruecolor($targ_w, $targ_h);
    imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],$targ_w,$targ_h,$_POST['w'],$_POST['h']);
    imagejpeg($tmp, $rootfolder.$folder.'thumb_'.$filename,100);

    imagedestroy($tmp);
    imagedestroy($src);
Run Code Online (Sandbox Code Playgroud)

然后我将两个jpeg函数更改为png,如下所示:

    $src = imagecreatefrompng("http://www.gaze.se/".$folder.$filename);
    $rootfolder = $_SERVER['DOCUMENT_ROOT'] ;
    $tmp = imagecreatetruecolor($targ_w, $targ_h);
    imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],$targ_w,$targ_h,$_POST['w'],$_POST['h']);
    imagepng($tmp, $rootfolder.$folder.'thumb_'.$filename,100);

    imagedestroy($tmp);
    imagedestroy($src);
Run Code Online (Sandbox Code Playgroud)

但随后图像被破坏,当我尝试打开它时,此消息显示:

错误信息

有关如何解决这个问题的任何想法?

wld*_*svc 7

查看http://php.net/manual/en/function.imagepng.php.对于PNG文件,$ quality参数应为0到9.正如@jeroen所说,你一定要检查返回值.