本文摘自PHP中文网,作者青灯夜游,侵删。
使用Node.js怎么压缩图片?下面本篇文章给大家介绍一下使用Node.js实现图片压缩的方法,一起来看看吧!一、内容简介
前段时间开发了上传图片到七牛的Vscode插件,当时还差了一个功能:图片压缩,这次也终于解决了;同时还解决了一个遗留bug(链接内有空格编辑器会卡住),现在已经可以算是一个有完整功能的插件了,感兴趣的小伙伴可以在Vscode中搜索插件
upload-to-qiniu
进行安装。【推荐学习:《nodejs 教程》】
效果预览:
二、node压缩图片
一开始是打算用TinyPNG
的API实现图片压缩,但是尝试过后发现压缩速度特别慢,而且好像还要花钱,果断就放弃了。改为使用imagemin。
这里是有一个坑的: 由于imagemin
不可以直接压缩图片,而是需要依赖imagemin-jpegtran
和imagemin-pngquant
,但是在安装imagemin-pngquant
时会安装不了,找到了一个原因是说这个库是基于一些底层语言实现,所以不能直接安装,需要在电脑上安装另一个依赖libpng
。
安装libpng
直接贴一个安装brew的地址:zhuanlan.zhihu.com/p/90508170,只要对着他说的敲命令基本上就可以安装brew啦。最后我们再执行brew install libpng
,等到libpng
安装成功后,到项目中安装imagemin-pngquant
就可以安装上了。
代码实现压缩图片根据需求我们肯定不希望他将图片压缩后放在文件夹里,而是需要在代码中直接获取到压缩后的内容,直接上传到七牛。那么就要用imagemin.buffer
,这个方法通过接收一个buffer
对象,经过压缩后再返回一个buffer
,我们只要用压缩后的buffer直接上传到七牛,思路就是这样,下面是代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
这样我们就可以很容易的实现了,图片压缩,现在我们再改写一下上传到七牛:因为之前没有压缩我们可以直接传文件路径上传七牛,压缩后我们只有buffer了,需要上传buffer到七牛:
相关阅读 >>
更多相关阅读请进入《node.js》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者