跳至正文

使用 Imagemin 来压缩 GIF

想开发一款拍摄 GIF 图片的桌面应用 ,通过摄像头拍摄,然后通过 gif.js 来合成 GIF,虽然其提供了一些压缩参数,但是实在有限,拍摄 640 x 480,15FPS,3秒的一张 GIF,要到 6-8M,所以希望能进一步压缩之后再进行上传分享的操作。

压缩方案采用的是 imagemin 配合 imagemin-giflossyimagemin-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 下面,这样就可以正常工作了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注