2016-04-14 130 views
0

我目前正在努力加速我们开发的网站。我正在处理的部分是优化图像,使它们尽可能小(文件大小,而不是尺寸),而不会损失质量。如何仅使用PHP压缩尚未压缩的图像?

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

我们正试图找到一个解决方案,不需要我们安装模块或任何东西。我们已经使用imagejpeg(),imagepng()imagegif(),但由于之前解释的原因,我们不使用$quality参数。我见过一些片段,但他们都使用imagejpg()之类的。

这就是说,有没有优化图像优化图像没有风险优化先前优化图像的确定的方式?或者使用imagejpeg(),imagepng()imagegif()是否没有问题,即使这意味着优化已优化的图像?

谢谢!

+0

定义优化,你是什么意思?压缩?尺寸是多少?调色板?隔行扫描? – Tschallacka

+0

我的意思是压缩。当我提到'优化'时,我的意思是尽可能减小文件的质量而不损失质量,因为我们的网站依赖图像不是像素化或模糊。我会编辑我的问题,然后看看你的答案。谢谢! – Sean

+0

将您的优化步骤添加到上传过程中,并在图像存储时将其应用于所有传入图像。如果文件的大小已经低于您设置的标准,因为上传的人已经对其进行了优化,那么再次处理该文件将不会造成影响。 –

回答

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) 

和你建立了什么是文件大小的上限可接受的参数的方式。如果尺寸匹配,并且文件大小较大,则不优化。

但不知道更多细节究竟是什么理解优化,这是我能想到的唯一的事情。 “

+1

是的,我的意思是压缩,我希望文件大小尽可能低而不会损失质量。你的方法实际上正是我的问题的答案,我从来没有想过将文件大小与维度进行比较。我只希望我选择正确的尺寸和文件大小,我认为这是一个反复试验的过程。感谢你能这么快回复! – Sean

+0

得到一堆混合质量,色深和尺寸的维基/随机图像,并将它们放入队列中。然后在压缩变得不可接受时增加压缩阶段。然后保存文件大小+文件类型+维度。通过快速的用户界面,你可以快速自动制作你的标准,并把一个实习生或一些廉价劳动力,通过点击按钮 – Tschallacka

+0

后,你可以得到一个尺寸的图形x文件大小并使用一些基本的数学计算它可以最大限度地包含的值来对所有可能的值进行预测 – Tschallacka

2

”如果优化已优化的图像,质量会变差。“ 如果您使用的方法没有松动,则不需要。

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

+0

我在印象中需要一个插件或模块,但我认为这是Linux服务器的本地特性? – Sean

+0

注意别人的同样的问题:虽然我接受了@ michael-dibbets的回答,但这个回答会降低图片的文件大小,并且应该继续降低质量。 – Sean

0

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

我已经使用他们的在线工具来手动减少JPG和PNG文件的文件大小,但他们做的是提供一个免费的API服务,为每月前500张图片。如果作为评论比答案更好,我很抱歉,我对于stackoverflow并不熟悉,但还没有得到足够的分数,但觉得这可能是一个方便的替代解决方案。

0

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

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