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

标签 image node.js image-resizing

我正在 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/

相关文章:

node.js - Redis-node库丢弃事务

objective-c - cocoa : how to add an icon to NSTabViewItem using the method drawlabel:inRect in cocoa?

html - 调整 Wordpress 标题 Logo 大小

java - 需要帮助用 Java 绘制图像

jquery - <head> 中绑定(bind)图像加载错误

html - Div Background-image 保持与另一个 Div 相同的高度

c# - 旋转增加图像尺寸的原因是什么?

iphone - 访问 UIImage 属性而不将图像加载到内存中

格式化日期时 NodeJS 小时内的 SQL 查询关闭

node.js - 成功登录后Azure身份验证返回登录页面-node.js