php图像调整大小与全尺寸图像

时间:2011-11-17 19:02:17

标签: php image resize

我正在构建一个图片库,在首页显示一些图片。图像大于首页中显示的实际尺寸,这引出了以下问题:

如果缓存不是一个选项,那会更好:

  1. 使用php缩小图像并将其发送给客户端。

  2. 发送原始的完整尺寸图片并让客户缩小它(使用简单的widthheight属性)

  3. 我倾向于认为第二种是更好的解决方案,但我希望听到更多意见。

    谢谢!

    编辑:

    当人们上传图片时,我会创建缩略图,以便在浏览网站时显示这些图片。

    “缓存不是一个选项”的原因:

    讨论的图像是首页中的5个“特色”图像,最多不会超过一个小时。那么为每个上传的图像创建另一个图像副本是不是浪费?

4 个答案:

答案 0 :(得分:1)

基本上,它取决于

  • 原始到期望的宽高比是多少?对500x500图像提供服务并将其显示为250x250并不是一件大事,但在1920x1080图像上浪费带宽是。此外,如果您提供过多的大图片,移动设备可能没有足够的资源来实际显示网页。
  • 你有什么更多:带宽或CPU功率?你能确定没有人使用你的动态缩放器作为DOS目标吗?

通常,具有缓存的解决方案,即使是非常临时的缓存,也会好得多。

[AD编辑]

  

讨论的图像是首页中的5个“特色”图像   最长不超过一小时不会保持不变所以这不是浪费   为此创建每个上传图像的另一个图像副本?

是的。但您可以简单地为这些缩略图创建一个单独的文件夹,并设置一个cron作业来擦除超过一小时的文件。这是我在我的网站上使用的一个例子(设置为30分钟):

*/15 * * * * find /var/www/directory/ -mmin +30 -exec rm -f {} \; >/dev/null 2>&1

答案 1 :(得分:1)

考虑到'足够'的CPU资源,我希望在发送图像之前缩小图像,以便在连接不良和移动设备的人身上轻松实现。

另一种选择和我首选的策略是保留较小版本的图像然后使用它们。如果图像是在某个时刻上传的,则在上传时创建较小版本的图像。

答案 2 :(得分:1)

这取决于你的流量,但我会动态调整大小并保存拇指。因此,如果拇指存在,请服务它,如果没有动态调整并服务(保存拇指)。

然后在cronjob中你可以删除旧图像。

答案 3 :(得分:0)

如何3.不要在应该为客户端提供服务的过程中调整图像大小 - 让后台进程调整大小,如果调整大小则发送缩略图,如果还没有则发送完整图像。这样做的好处是可以独立于用户请求限制调整大小过程。