我有个疑问。如果我强制imagejpeg保存一个.png文件会有问题吗?如下例所示:
imagejpeg($img,$_SERVER['DOCUMENT_ROOT']."/test.png",80);我想使用这个方法,因为我可以使用$quality过滤器。在这种方法中,我保存了一个大约25kb的.png文件,但如果我使用imagepng,我的图像大约是200kb (我使用0-9的$quality级别,但我没有看到任何变化,只有-20kb)。我不想犯错误,因为我的网站每秒都在生成.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文件会有问题吗?
发布于 2016-09-06 22:18:26
您只强制使用已创建文件的文件名。生成的文件将是包含其所有属性的jpg。如果使用imagejpeg()方法,将不会得到压缩的png文件。
您需要了解这两种格式的区别。jpg是一种压缩格式,压缩时会丢失图像信息,而png是一种无损格式。png也有一个压缩级别,但由于没有图像信息被破坏,它将作为一个jpg文件更大。
如果你使用imagepng($image, $filename, 9),你会得到一个压缩效果最好的png文件。
发布于 2016-09-06 22:00:08
您应该使用imagepng()而不是imagejpeg()来创建png文件。
http://php.net/manual/fr/function.imagepng.php
https://stackoverflow.com/questions/39350724
复制相似问题