想开发一款拍摄 GIF 图片的桌面应用 ,通过摄像头拍摄,然后通过 gif.js 来合成 GIF,虽然其提供了一些压缩参数,但是实在有限,拍摄 640 x 480,15FPS,3秒的一张 GIF,要到 6-8M,所以希望能进一步压缩之后再进行上传分享的操作。
压缩方案采用的是 imagemin 配合 imagemin-giflossy 和 imagemin-gifsicle,碰到了一些问题在此记录一下。
安装流程:
cd xxxx npm init …… npm install --save imagemin@7.0.1 npm install --save imagemin-giflossy npm install --save imagemin-gifsicle node test.js
如果是采用 Electron 来开发的应用,请使用 imagemin@7.0.1,最新版本不支持 require;
const imagemin = require('imagemin'); const imageminGiflossy = require('imagemin-giflossy'); (async () => { const file = await imagemin(['images/001.gif'], { destination: 'build/images', plugins: [ imageminGiflossy({ lossy: 80 }) ] }); console.log(file); })();
在 mac 上不会有什么问题(除了梯子),但是在 windows 上,运行之后会报错,找不到
node_modules\\giflossy\\vender\\gifsicle.exe
你会发现在 node_modules\\gifsicle 下有这个 vender\\gifsicle.exe,解决方案就是把 gifsicle 下的 vender 拷贝到 giflossy 下面,这样就可以正常工作了。