我正在Node.js(+ express 4)上开发一个Web应用程序,用户可以通过将其上载到服务器来设置其个人资料图像。我们已经限制了文件的模仿类型和最大文件大小,因此用户上传的png或jpeg图片不能超过200KB。
问题是我们想将上传的图片分辨率(服务器端)调整为200x200,以改善页面加载并节省磁盘空间。经过研究,所有答案都指向使用任何基于ImageMagick或GraphicsMagick的模块。
但是,对于我来说,必须安装ImageMagick / GraphicsMagick进行简单的图像大小调整似乎太过头了,因此,除了Node.js之外,还有其他解决方案吗?
编辑: 由于不再维护以前的解决方案(lwip),因此我将接受的解决方案更改为Sharp。感谢您的所有反馈!
我会投票给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
然后离开。