【问题标题】:Optimise image to 25% using php gd library使用 php gd 库将图像优化到 25%
【发布时间】:2017-03-01 02:49:27
【问题描述】:

我可以使用 php GD 库将 PNG 或 jpeg 转换为原始图像的 25% 大小吗? 我无法安装额外的 php 扩展。

【问题讨论】:

标签: php compression


【解决方案1】:

如果您想将文件大小减少到原始图像的 25%,您可能需要进行一些反复试验,从计算和内存的角度来看,这可能代价高昂,因为在 GD 中是唯一的方法这样做如下:

$old_bytes=filesize($original_file_path);
$image=imagecreatefromjpeg($original_file_path);
imagejpeg($image, $new_file_path, $quality_guess);
$new_bytes=filesize($new_file_path);

$ratio=$old_bytes/$new_bytes;

棘手的问题是:你想得到多准确?您将不得不将上述代码或类似代码封装在某种循环中并多次执行,然后做出决定何时停止的主观判断调用。理想情况下,您希望 $ratio 接近 4。

如果您的源图像在质量设置方面都大致相似,您可能会发现手动测试单个文件的效果要好得多,只需决定一个固定的质量设置即可实现文件大小的减小正在寻找。

不过,根据我的经验,以一致的文件大小或一致的减少文件大小为目标通常是一个坏主意,因此您可能需要在这里重新考虑您的最终目标。通常我会根据质量来处理图像压缩,即我采集图像样本,然后使用不同的质量设置(75 通常是一个很好的起点)压缩它们,然后将它们发送给不同设备上的几个不同用户(在查看他们自己在不同的设备上),我选择了最低质量的设置,没有人可以注意到质量下降。通常它非常低,但它也将高度依赖图像的细节。根据内容的结构,某些图像比其他图像更容易压缩。

因此,如果您的目标是固定缩小尺寸,您可能会发现很多时候您压缩的时间远远少于您可以(即您可以降低质量甚至更多没有用户注意到)但您可能还会发现有时您实际上将质量降低到可怕的水平。例如,想象一个用户将质量设置保留为 100,然后另一个用户根据感知优化了质量设置。如果你的代码将它们都减少到 25% 的文件大小,你可能会比原来 100 质量的图像节省的钱要少得多,但你最终可能会得到一个明显糟糕的图像精心优化的图像。

所以...是的,你可以做你想做的事,但它的计算量很大,而且我无法想象一个好主意的场景。

【讨论】:

    猜你喜欢
    • 2011-09-01
    • 2016-05-14
    • 2011-02-11
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 2011-07-19
    相关资源
    最近更新 更多