生成缩略图的最佳做法?

时间:2011-05-16 04:46:42

标签: php image resize-image phpthumb

我正在创建一个用户上传其个人资料图片的社交网络。

此图片将在其150/150像素维度的个人资料页面中使用。

在主页,即用户活动源,我需要相同的图像为75/75像素。

这样做的最佳做法是什么

  1. 在飞行中调整图像大小(timthumb)。
  2. 调整服务器中的图像大小并保存。

4 个答案:

答案 0 :(得分:3)

上传照片时,请创建一组必需的缩略图并另存为[image_name] thumb [size_name] .jpg左右:

uploaded: file.jpg
medium: file_thumb_150x150.jpg
small: file_thumb_75x75.jpg

命名约定取决于您,但是您可以通过快速方式轻松访问所需的数据。无需使用服务器即时生成或在浏览器中进行扩展。

答案 1 :(得分:2)

我已经在这个问题上工作了一段时间,并且遇到了三种主要的方法:

  1. 在上传时生成缩略图作为后台进程。
  2. 通过主应用程序按需生成图像
  3. 使用URL作为API按需生成图像
  4. 每种方法都有其优点和缺点。

    1. 此方法限制性最强,您必须事先了解缩略图的所有用途和大小,以便上传后立即生成缩略图。主要优点是可以使用像nginx这样的服务器有效地提供图像,就像任何其他静态资源一样。
    2. Django有一个名为sorl-thumbnail的库,它提供了一个模板标签,用于在需要时生成各种缩略图。它使用快速键/值存储来跟踪已生成的缩略图,并在检测到源图像已更改时自动使陈旧生成的图像无效。然后,模板标记返回生成的图像的URL,该URL可以直接从nginx提供,而无需通过脚本层。比1更灵活,但你不能(例如)使用JavaScript生成图像URL并期望它存在,它必须由网站的后端代码或模板完成。
    3. 完全动态且灵活,您可以通过调整URL获得您想要的任何版本的图像,亚马逊使用此方法,就像所有这些占位符图像生成网站一样。可以在JavaScript中生成URL并执行您想要的任何花哨的事情。网站本身不需要任何关于缩略图层的知识,也不需要一些辅助方法来为您生成URL。但是,这显然是最耗费资源的方式,您需要确保您的架构能够处理负载。您需要使用本书中的每个技巧及时使缓存失效,避免在调整大小脚本上不必要的命中等。
    4. 我是第三种做事方式的忠实粉丝,我喜欢将图像生成与我的主要网站功能完全隔离,我喜欢相当大的灵活性,但你需要知道当它到来时你在做什么配置服务器来处理它。

答案 2 :(得分:0)

我告诉你我做了什么。我总是存储完整大小的图像,但是使用前导零来重命名数据库ID。在第一次使用时,我创建缩略图并将其存储在其他文件夹中,在下次调用中使用它。

答案 3 :(得分:0)

如果服务器空间和带宽是个问题,您应该考虑使用cdn。

亚马逊有一个good service,