首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制imagejpeg为.png

强制imagejpeg为.png
EN

Stack Overflow用户
提问于 2016-09-06 21:50:12
回答 2查看 1.6K关注 0票数 1

我有个疑问。如果我强制imagejpeg保存一个.png文件会有问题吗?如下例所示:

代码语言:javascript
复制
imagejpeg($img,$_SERVER['DOCUMENT_ROOT']."/test.png",80);

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

方法2.我试着用pngquant压缩.png图像,但我不知道怎么做,当我使用imagepng函数的时候。我试过这样做,但如果我将图像传递给函数,它就不起作用了。

代码语言:javascript
复制
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文件会有问题吗?

EN

回答 2

Stack Overflow用户

发布于 2016-09-06 22:18:26

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

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

如果你使用imagepng($image, $filename, 9),你会得到一个压缩效果最好的png文件。

票数 2
EN

Stack Overflow用户

发布于 2016-09-06 22:00:08

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39350724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档