【问题标题】:Uploading image to S3 and then resizing in node.js将图像上传到 S3,然后在 node.js 中调整大小
【发布时间】:2013-07-12 17:55:45
【问题描述】:

我正在构建一个网站,用户将在其中上传图像,然后图像最终必须存储在 Amazon S3 中。现在,考虑到直接从浏览器上传的可能性,我考虑了以下选项:

  1. 在浏览器中调整为所有三种尺寸,然后直接上传到 S3 - 这可行,但问题是我正在上传多张图片,我怀疑这是一个好方法。
  2. 将原始图像上传到 S3,在 node.js 中调整大小 - 我想实际上只上传原始图像,然后使用 node.js 调整大小。

2) 最好的方法是什么,这样我可以最大限度地减少我需要部署的服务的占用空间。

感谢任何指针!

干杯 维沙尔

【问题讨论】:

    标签: image node.js image-processing amazon-s3 imagemagick


    【解决方案1】:

    我建议使用图像 CDN 来加速图像交付。检查here

    Amazon S3 速度慢,图像很重

    众所周知,Amazon S3 在直接提供 Web 内容时速度很慢。一 慢的原因是一个桶只位于一个 地理位置。创建时选择位置 桶。例如,如果您的存储桶是在 Amazon 服务器上创建的 加利福尼亚,但您的用户在印度,那么图像仍将是 从加利福尼亚送达。这种地理距离导致图像缓慢 在您的网站上加载。

    此外,在 S3 上看到非常重的图像并不少见, 尺寸和高字节大小。只能推测原因, 但它可能与发布工作流程和 方便 S3 作为存储空间。

    使用像 ImageEngine 这样的图像交付,同时保持 S3 的工作流程 和便利程度。

    相信我,它的实现非常简单...... 非常非常简单,我重复一遍。

    一旦您在创建帐户后进行必要的设置,您所需要做的就是 使用 ImageEngine 域引用图像

    http://wq77sh2y.cdn.imgeng.in/path/image.jpg
    

    使用前缀功能参考图片

    http://wq77sh2y.cdn.imgeng.in/http://example.com/path/image.jpeg
    

    【讨论】:

      【解决方案2】:

      我不会仅仅因为它不利于用户体验而选择选项 1。

      我建议如下:只将原始图像上传到 s3,然后当客户端请求调整大小的变体时,从 s3 检索它,调整大小并通过 CDN 交付给客户端。

      这比一次性调整它们的大小要好,因为:

      • 也许您想稍后更改尺寸。根据要求调整大小可让您随意更改大小。否则,您将不得不检查每张图片并重新调整所有大小。
      • 用户不必等到所有图像都调整大小。相反,用户只等待图像从 node.js 服务器上传到 s3,假设您使用的是 aws,这很快。
      • 一次性调整大小会导致内存峰值。如果你在像 heroku 这样的低内存平台上,你可以很快达到 512mb 的内存限制,你的应用程序将交换并变得非常慢。更好地分散调整大小操作。
      • 您只将原件存储在 S3 上。调整大小的版本只是衍生版本 - 无需存储它们。

      我编写了一个库 https://github.com/mgmtio/simgr 来帮助我在我的应用程序中执行此操作。

      【讨论】:

      • 这个 repo 发生了什么
      【解决方案3】:

      G'day Vishal,

      我想你最大的图像会比你的小尺寸大得多,小尺寸可能是缩略图或其他。因为图像文件大小或多或少随着图像的区域缩放,这种效果会更加明显。

      因此,您创建的任何从 S3 拉回最大图像以重新缩放的服务都可能比仅从客户端上传所有三个图像的版本使用更多的 S3 带宽!所以只做选项 1 可能更明智。

      编辑:如果您真的想避免上传多个文件,我仍然不会使用 upload-directly-to-S3 选项,因为 a) 您必须在S3 和 b) 传送的总数据量仍将大于将图像接收到节点应用程序、在那里调整大小然后将各种大小保存到 S3 的情况。

      This question discusses image manipulation in Node.

      -----尼克

      【讨论】:

      • 谢谢尼克,但是,需要考虑的另一件事是人们使用移动设备并因此使用他们的带宽进行上传。此外,上传图片的用户体验将需要更长的时间。
      • 只是出于兴趣,您期望的“原始”图像尺寸是多少,缩小后的图像尺寸是多少?
      • 100% 强烈同意。最好在 node.js 中调整大小并将不同的大小上传到 S3。
      猜你喜欢
      • 2011-10-04
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2014-11-16
      • 2014-12-07
      • 1970-01-01
      相关资源
      最近更新 更多