我有一个用户可以上传图片的网站。我直接处理这些图像并使用 CodeIgniter Image Manipulation 类将它们调整为 5 种其他格式。我这样做非常有效,如下所示:
- 我总是从以前的格式调整大小,而不是从原始格式
- 我使用 90% 的图像质量调整大小,这大约是 jpeg 文件大小的一半
在我从另一个问题中得到建议后,我实施了上述做事方式。我的测试用例是 RGB 模式下的 1.6MB JPEG,分辨率为 3872 x 2592。对于该图像,这是一种边界情况,调整大小的过程总共需要大约 2 秒,这对我来说是可以接受的。
现在,只剩下一个挑战。我希望使用 90% 的质量压缩原始文件,但不调整其大小。这个想法是该文件也将占用文件大小的一半。我想我可以简单地将其调整为当前尺寸,但这似乎对文件或其大小没有任何影响。这是我的代码,有点简化:
$sourceimage = "test.jpg";
$resize_settings['image_library'] = 'gd2';
$resize_settings['source_image'] = $sourceimage;
$resize_settings['maintain_ratio'] = false;
$resize_settings['quality'] = '90%';
$this->load->library('image_lib', $resize_settings);
$resize_settings['width'] = $imagefile['width'];
$resize_settings['height'] = $imagefile['height'];
$resize_settings['new_image'] = $filename;
$this->image_lib->initialize($resize_settings);
$this->image_lib->resize();
上面的代码适用于除原始格式之外的所有格式。我尝试调试 CI 类以查看为什么没有任何反应,我注意到脚本检测到尺寸没有改变。接下来,它只是简单地复制该文件而不对其进行处理。我评论了那段代码以强制它调整大小,但现在仍然没有任何反应。
有谁知道如何在不改变尺寸的情况下使用 CI 类将图像(任何图像,而不仅仅是 jpeg)压缩到 90%?