我正在 Node.js (+ express 4) 上开发一个网络应用程序,用户可以通过将其上传到服务器来设置他们的个人资料图片。我们已经限制了文件 mimetype 和最大文件大小,因此用户不能上传超过 200KB 的 png 或 jpeg 图像。
问题是我们想将上传的图像分辨率(服务器端)调整为 200x200,以改善页面加载并节省磁盘空间。经过一番研究,所有答案都指向使用基于 ImageMagick 或 GraphicsMagick 的任何模块。
但是,必须安装 ImageMagick/GraphicsMagick 来进行简单的图像调整对我来说似乎太过分了,那么,除了 Node.js 之外,还有其他解决方案吗?
编辑:我已将接受的解决方案更改为 sharp因为不再维护以前的解决方案(lwip)。感谢您的所有反馈!
最佳答案
我会投票给 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
});
很快,typically 6x faster than the fastest imagemagick-based node bindings ,并且在非常少的内存中运行,perhaps 10x less .指向 libvips 的清晰链接直接使用图像库,无需对外部程序进行脱壳,而且库本身在此任务上比 *magick 更快、更高效。它支持有用的东西,如流、缓冲区和文件系统输入和输出、颜色管理、透明度、 promise 、覆盖、WebP、SVG 等等。
从Sharp 0.20 开始,npm 将在大多数平台上自动下载完整的预编译二进制文件,因此不需要 node-gyp。只需输入:
npm install sharp
或:
yarn add sharp
你走了。
关于image - Node.js:不使用 ImageMagick 调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24026320/