【问题标题】:Cropping and resizing images on the fly with node.js使用 node.js 即时裁剪和调整图像大小
【发布时间】:2011-11-11 11:51:55
【问题描述】:

我在 Amazon EC2 上运行 node.js 服务器。我得到一个巨大的 csv 文件,其中包含指向远程主机上产品图像的链接的数据。我想在 Amazon S3 上裁剪和存储不同尺寸的图像。

如何做到这一点,最好只使用流,而不将任何内容保存到光盘?

【问题讨论】:

  • 我曾想过将 imagemagick 用于图像处理部分,但我对替代方案持开放态度。
  • 我不喜欢这个问题。有太多我不明白你将来需要这些。你永远不会存储它们吗?这似乎是不必要的浪费。
  • 您还没有尝试过什么?.. 如果遇到问题,您为什么不尝试然后发布问题? (并在你这样做时包含代码。)
  • 我相信这个问题很好。他显然不知道从哪里开始,而且很明显,他正在寻找如何实现这一目标的指导方针。 +1
  • @jcolebrand:“我想在 Amazon S3 上裁剪并存储不同尺寸的图像。”我只想将我从供应商那里获得的只有一个(大)尺寸的图像调整为我的视图所需的尺寸。我不明白这是多么浪费。

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


【解决方案1】:

我认为您无法暂时将完整尺寸的图像保存到磁盘,因为调整大小/裁剪/等通常需要完整的图像文件。所以,我说 ImageMagick。

【讨论】:

  • 不,您可以使用流来实现,但这需要大量内存或需要大量网络流量。只是不值得 imo tho。
  • 你是对的;我想我的意思是你需要完整的图像来进行操作(无论是在磁盘上还是在内存中),所以使用流和内存缓冲区会很愚蠢,因为磁盘空间比 RAM 便宜。
  • 保存到磁盘的问题在于,它带来了管理开销。我什至不确定大多数托管的 node.js 服务是否可以处理它(这对我来说不是问题,只是说)。
  • @Thomas 以及在您操作时不断流式传输的问题是密集的 CPU 和内存开销。你打算在 VPS 上做这个是吗?您是按 CPU 小时数还是按“实例当前处于活动状态”小时数付费?按 CPU 小时数付费更有意义。
  • 在简单的图像调整大小(即使是重新采样)中没有任何东西绝对需要随机访问整个图像。从算法的角度来看,这可以逐步完成。对于最简单的调整大小,“最近像素”减少的情况,您只需删除给定行中的每个第 n 个像素和每个第 n 行。显然,这不需要任何内存,只需要两个计数器。如果您想放大图像或使用任何形式的重采样/插值,事情会变得更加复杂,但即便如此,您需要的最大值还是保留最后 n 行(n = 重采样半径)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
  • 2014-03-24
  • 2023-03-09
  • 2011-11-11
  • 1970-01-01
相关资源
最近更新 更多