强制imagejpeg为.png

时间:2016-09-06 13:50:12

标签: php pngquant imagejpeg

我怀疑。如果我强制imagejpeg保存.png文件有问题吗? 就像在这个例子中一样:

imagejpeg($img,$_SERVER['DOCUMENT_ROOT']."/test.png",80);

我想使用此方法,因为我可以使用$quality过滤器。 在这个方法中我有一个保存的.png文件大约25kb,但是如果我使用imagepng我的图像是大约200kb(我使用了0-9的$ quality级别,但我没有看到任何变化,只有-20 KB)。 我不想犯错,因为我的网站每秒都会生成.png图像。

方法2。 我试图用pngquant压缩.png图像,但我不知道如何使用imagepng函数。 我尝试过类似的东西,但是如果我将图像传递给函数它就无法工作。

ob_start();
imagepng($img);
$png = ob_get_clean();
file_put_contents($_SERVER['DOCUMENT_ROOT']."/test.png", compress($png);

function compresss($img)
{
    //...
}

在其他情况下,如果我$png = $_FILES['file']['tmp_name']正在运作。那么有没有办法用pngquant压缩,或者如果我强制imagejpeg保存.png文件会有问题吗?

2 个答案:

答案 0 :(得分:1)

您应该使用 imagepng() 而不是imagejpeg()来创建png文件。

  

http://php.net/manual/fr/function.imagepng.php

答案 1 :(得分:1)

您只强制创建文件的文件名。生成的文件将是jpg及其所有属性。如果使用imagejpeg()方法,则不会获得压缩的png文件。

您需要了解两种格式的区别。虽然jpg是压缩格式,在压缩时会丢失图像信息,但png是无损格式。 png也有压缩级别,但由于没有图像信息被破坏,它将作为jpg文件更大。

如果您使用imagepng($image, $filename, 9),则会获得压缩效果最佳的png文件。