PHP';s imagepng()方法保存无效图像

PHP';s imagepng()方法保存无效图像,php,gd,Php,Gd,我正在使用GD库自动生成上传图像的缩略图版本。我调用相应的image\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我的代码在JPEG和GIF格式下运行良好,但如果我上传PNG文件,则生成的缩略图无效。它实际上只包含33个字节(包括我到目前为止尝试过的任何源PNG)。此图像不显示在浏览器中,也不能通过预览打开(在MacOS上) 我使用imagecreatetruecolor()和imagec

我正在使用GD库自动生成上传图像的缩略图版本。我调用相应的
image\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我的代码在JPEG和GIF格式下运行良好,但如果我上传PNG文件,则生成的缩略图无效。它实际上只包含33个字节(包括我到目前为止尝试过的任何源PNG)。此图像不显示在浏览器中,也不能通过预览打开(在MacOS上)

我使用imagecreatetruecolor()和imagecopyresampled()生成缩略图,如下所示:

function _resizeImageToFit($resource, $size)
{
    $sourceWidth = imagesx($resource);
    $sourceHeight = imagesy($resource);  
    if($sourceWidth >= $sourceHeight) {
        // landscape or square
        $newHeight = 1.0*$size/$sourceWidth*$sourceHeight;
        $newWidth = $size;
    }
    else {
        // portrait
        $newWidth = 1.0*$size/$sourceHeight*$sourceWidth;
        $newHeight = $size;
    }
    $thmb = imagecreatetruecolor($newWidth, $newHeight);
    imagecopyresampled($thmb, $resource, 0, 0, 0, 0, $newWidth, $newHeight, $sourceWidth, $sourceHeight);
    return $thmb;
}
下面是我的安装程序的版本信息(它是MAMP版本1.9.4)

PHP版本5.3.2 捆绑的GD版本(2.0.34兼容)

以下是生成的缩略图(PNG)无效的示例:

巴布亚新几内亚

IHDRdaØMì∞ 试试这个功能

âPNG

IHDRdaØMì∞ 试试这个功能

âPNG

IHDRdaØMì∞
我发现了我的错误。imagepng()的质量值范围为0到9,而imagejpeg()的质量值范围为0到100,imagegif()不接受任何此类参数。我试图保存一个质量为100的PNG

所以,这是一个可爱的RTM案例。谢谢你的回复


我发现了我的错误。imagepng()的质量值范围为0到9,而imagejpeg()的质量值范围为0到100,imagegif()不接受任何此类参数。我试图保存一个质量为100的PNG

所以,这是一个可爱的RTM案例。谢谢你的回复


如何处理此函数的返回值?保存到文件系统或直接为其提供服务?我调用
$saveSuccess=$imagesave($thumbResource,$thumbPath,100)后接
imagedestroy($thumbResource)。我在这里根据图像类型为图像函数调用使用一个变量。当这是一个PNG时,调用的结果是
imagepng()
$saveSuccess(imagepng返回的值)设置为TRUE表示成功,即使图像已损坏。您如何处理此函数的返回值?保存到文件系统或直接为其提供服务?我调用
$saveSuccess=$imagesave($thumbResource,$thumbPath,100)后接
imagedestroy($thumbResource)。我在这里根据图像类型为图像函数调用使用一个变量。当这是一个PNG时,调用的结果是
imagepng()
$saveSuccess(imagepng返回的值)设置为TRUE表示成功,即使图像已损坏。