Node.js如何调整图片大小而不使用ImageMagick?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

我正在开发Node.js(+ express 4)上的Web应用程序,用户可以通过将其上传到服务器来设置其配置文件映像。我们已经限制文件mimetype和max filesize,所以用户不能上传超过200KB的png或jpeg图片。

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

不得不安装ImageMagick / GraphicsMagick来做一个简单的图像调整大小似乎对我来说太过于矫枉过正,那么除了Node.js,还有其他解决方案吗?

提问于
用户回答回答于

我最近开始为NodeJS开发一个没有任何运行时依赖的图像处理模块。它还处于早期阶段,但已经可以使用。

要求的内容如下:

image.resize(200, 200, function(err, image){
    // encode resized image to jpeg and get a Buffer object
    image.toBuffer('jpg', function(err, buffer){
        // save buffer to disk / send over network / etc.
    });
});
用户回答回答于
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的最快节点绑定速度快5倍,并且运行速度很小,可能会少10倍。与图书馆的直接联系非常紧密,对外部程序没有任何影响,而且图书馆本身比这个任务的* magick更快更高效。它支持流,缓冲区和文件系统输入输出,颜色管理,透明度,承诺,覆盖,WebP,SVG等有用的东西。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励