一尘不染

Node.js:不使用ImageMagick调整图像大小

node.js

我正在Node.js(+ express
4)上开发一个Web应用程序,用户可以通过将其上载到服务器来设置其个人资料图像。我们已经限制了文件的模仿类型和最大文件大小,因此用户上传的png或jpeg图片不能超过200KB。

问题是我们想将上传的图片分辨率(服务器端)调整为200x200,以改善页面加载并节省磁盘空间。经过研究,所有答案都指向使用任何基于ImageMagick或GraphicsMagick的模块。

但是,对于我来说,必须安装ImageMagick /
GraphicsMagick进行简单的图像大小调整似乎太过头了,因此,除了Node.js之外,还有其他解决方案吗?

编辑:
由于不再维护以前的解决方案(lwip),因此我将接受的解决方案更改为Sharp。感谢您的所有反馈!


阅读 315

收藏
2020-07-07

共1个答案

一尘不染

我会投票给Sharp

sharp('input.jpg')
  .resize(200, 200)
  .toFile('ouput.jpg', function(err) {
    // output.jpg is a 200 pixels wide and 200 pixels high image
    // containing a scaled and cropped version of input.jpg
  });

它速度很快,通常比最快的基于imagemagick的节点绑定6倍,并且运行时的内存很少,甚至可能少10倍。直接链接到libvips图像库,没有炮击外部程序,并且该库本身比*
magick更快,更高效。它支持有用的功能,例如流,缓冲区和文件系统的输入和输出,颜色管理,透明度,承诺,覆盖,WebP,SVG等。

从0.20开始,npm将在大多数平台上自动下载完整的预编译二进制文件,因此不需要node-gyp。只需输入:

npm install sharp

要么:

yarn add sharp

然后离开。

2020-07-07