如何仅使用PHP来压缩尚未压缩的图像?

时间:2016-04-14 13:30:22

标签: php image optimization

我目前正在努力加快我们开发的网站。我现在正在处理的部分是优化图像,使它们尽可能小(文件大小,而不是尺寸)而不会降低质量。

我们的客户可以通过我们的自定义CMS将自己的图像上传到网站,但图像根本没有被压缩或优化。我的上司解释说这是因为客户可以上传他们自己的图像,这些图像可以事先通过Photoshop或类似的工具进行优化。如果优化已经优化的图像,质量会变差。是吗?

我们正在努力寻找一种不会要求我们安装模块或其他任何东西的解决方案。我们已经使用imagejpeg()imagepng()imagegif(),但由于之前解释的原因,我们不会使用$quality参数。我看过一些片段,但他们都使用imagejpg()之类的。

话虽如此,是否有一种确定图像优化的方法,而没有优化先前优化图像的风险?或者使用imagejpeg()imagepng()imagegif()完全没问题,即使它意味着优化已经优化的图像?

谢谢!

4 个答案:

答案 0 :(得分:2)

"如果您优化已经优化的图像,质量会变差。 " 如果您使用没有松动的方法,请选择否。

我不知道直接在php中的方法,但如果你在Linux服务器上,你可以使用jpegtran或jpegoptim(使用--strip-all)用于jpeg和OptiPNG或PNGOUT用于png。

答案 1 :(得分:1)

从你的标题出发,我将假设压缩

所以,假设您的客户上传了800x600的普通jpg。 客户jpg是272kb,因为它有完整的细节和一切。

您需要在可接受的维度上设置文件大小的阈值。

喜欢:

if $dimensions->equals(800,600) and file_type($image) =='jpg' and file_size($image) > 68kb 
then schedule_for_compression($image)

这样就可以设置可接受的参数作为文件大小的上限。如果尺寸匹配,并且文件大小更大,则表示未进行优化。

但是,如果不了解更多有关优化的详细信息,这是我唯一能想到的。

答案 2 :(得分:0)

如果您使用较少数量的图片进行压缩,您可能会发现外部服务,例如:https://tinypng.com/developers可能会有所帮助。

我已经使用他们的在线工具手动减少了JPG和PNG文件的文件大小,但他们确实为每月前500张图片提供免费的API服务。

道歉,如果评论作为评论而不是答案会更好,我对stackoverflow相当新,并且还没有得到足够的分数,但觉得这可能是一个方便的替代解决方案。

答案 3 :(得分:0)

保存质量设置相同或更高的JPEG不会导致质量明显下降。只需使用所需的质量设置重新保存即可。如果文件最终变大,只需丢弃它并保留原始文件。在优化之前使用jpegran或jpegoptim删除元数据,以便在与原始文件比较时不会影响文件大小。

除非减少颜色数量,否则PNG和GIF不会失去任何质量。只需使用Gyncoca提到的优化器之一。