【问题标题】:How to quickly process images uploaded by user?如何快速处理用户上传的图片?
【发布时间】:2012-02-01 17:39:57
【问题描述】:

我正在考虑使用 imagemagick 以各种方式处理用户上传的图像(创建缩放的新图像、有阴影等),但我一直担心速度。我不希望用户永远盯着加载中的 gif。

所以我开始环顾四周,看看其他网站是如何做到的,我找到了http://www.redbubble.com。用户上传艺术品,几乎立即就会在商店中以各种方式处理大量的图像变化。它用什么来处理和生成这么快的图像?

【问题讨论】:

  • 猜想,他们将图像重新采样为缩略图并玩弄那些,因为它们非常小,所以速度非常快。然后,当用户尝试查看其中一个时,您将相同的效果应用于较大的图像,并将其发送给用户。另一种可能性是“一个非常强大的服务器”。
  • 能不能到你上传图片的那个页面,右键“查看页面源代码”(我的火狐就是这样写的),然后看看有没有脚本?它们看起来像
  • @DaveRandom - 我可以通过直接网址直接访问各种商店图片,因此当您上传图片时,它会立即创建每个变体,而不仅仅是在查看时(如果那是你想说)
  • @Noah 不一定,它可能会在您请求 URL 时创建它们。仅仅因为你有一个“直接 URL”并不意味着它指向一个实际存在的文件,它可能会被重写以指向一个脚本。
  • @DaveRandom - 哦,我明白了。根据要求创建它们。即使我通过萤火虫更改图像的文件路径,这是否有效?因为我可以在 Red Bubble 上。你知道任何关于如何实现这样的事情的文章吗?

标签: php javascript file-upload imagemagick


【解决方案1】:
  • 维护客户端图像处理相对困难且不方便(可能是类似于 www.picnik.com 的某种 Flash 应用,但功能有限)

  • 我看到了 ruby​​、nginx、远程 xhr 调用、json 等的使用,这意味着可以使用延迟作业/resque 来安排异步图像处理,使用 imagemagick、json/xhr 来检查状态。从 ih*.redbubble.net(指向 edgecastcdn.net)请求处理后的图像,看起来它们是动态生成的,并让 CDN 缓存它们,直到用户更改该图像或它在缓存中过期。

    李>
  • 他们每月有大约 80 万访问者,您不想将负载放在应用程序/Web 服务器上来处理图像,在幕后有延迟作业或 resque 或 ih*(图像主机?)服务器产生动态图像(其中有 4 个,但谁知道虚拟主机/代理配置后面有多少个)

  • 所有上传请求都转到亚马逊(ec2,可能是负载平衡 IP),原件存储在亚马逊 s3 上。他们可以通过按需请求更多 ec2 实例来扩展。

希望您了解背后的原因...回到您的问题:没有客户端图像处理,使用了 imagemagick,并且他们有可能即时执行。

【讨论】:

    猜你喜欢
    • 2022-12-17
    • 1970-01-01
    • 2018-05-21
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多