【发布时间】:2026-02-06 22:25:01
【问题描述】:
我有一个允许用户上传图片的应用程序。我使用的测试用例是 1.6MB 的 jpeg,尺寸为 3872 x 2592px。后端的上传脚本会将上传的图片调整为额外的 6 种格式:
- 正方形(小号 75 x 75)
- 小拇指 (50 x 38)
- 拇指 (100 x 76)
- 小 (240 x 161)
- 中等 (500 x 378)
- 大 (1024 x 774)
我知道这很多,但相信我,我需要这个。我使用 Code Igniter 的 Image Manipulation 类来调整大小,该类使用 GD、GD2 或 ImageMagick 来调整大小。我首先将其配置为使用 GD2,并注意到整个调整大小过程需要 11 秒。
由于用户必须等待这个过程,这是不可接受的。经过大量阅读后,我了解到 ImageMagick 是一个更快、更高效的操作库,所以我改用它:
$sourceimage = $data['filedata']['file_path'] . $data['imagedata']['user_id'] . "/" . $imageid . $data['filedata']['file_ext'];
$resize_settings['image_library'] = 'imagemagick';
$resize_settings['library_path'] = '/usr/bin';
$resize_settings['source_image'] = $sourceimage;
$resize_settings['maintain_ratio'] = false;
$resize_settings['quality'] = "100%";
$this->load->library('image_lib', $resize_settings);
令我惊讶的是,调整大小的过程现在需要更长的时间:具体来说是 15 秒。
查看我的日志,我发现每次调整大小操作都需要 2 秒,无论它调整大小的文件格式如何。我想这是因为我总是从原始大小调整大小,这非常大。
我不愿意将调整大小的过程转移到预定的过程中,因为这会降低网站的可用性。这意味着用户必须等待几分钟才能开始查看/使用图像。
那么,有没有什么聪明的方法可以显着加快这个调整大小的过程,以便我可以实时保持它?请明确:不允许使用较小的分辨率,这是我正在建立的摄影网站。另外,我真的需要上面提到的六种格式。
【问题讨论】:
-
您能否提供给我们 1.6MB 原始 JPEG 图片?
标签: php codeigniter imagemagick gd2