lottie-minify在线压缩lottie 的json数据

原文链接: lottie-minify在线压缩lottie 的json数据

上一篇: lottie-web 实现可以播放zip文件的播放器

下一篇: gl-matrix 常见运算

参考

https://github1s.com/fancy-lottie/lottie-compress/blob/HEAD/src/main.ts

压缩后依然可以正常播放

up-7842e37b85889b5564556880bb8813295d6.png

只需要处理json那部分, 图片的话需要手动处理, 因为图片很麻烦, 而且处理方式很不一样, 不需要放在一起, 而且主要是我用这个库一直报错...

阿里的是会把图片打成base64的, 但是有的很大而且多的是用的路径, 主要是针对播放场景做裁剪, 所以可以去除编辑信息, 也就是裁剪过的json不能再次编辑了, 因为去除了一些层级和名称

创建项目

pnpx tsdx create lottie-mini

深度删除一些不用的值, 这些值只在编辑的时候用, 所以在播放的时候可以删除掉

使用方法和下面的测试一样, 传入一个json data就行, copy表示是否原地修改, 也可以传入一个自定义的删除键列表

import { resolve } from 'path';
import { readFileSync, writeFileSync } from 'fs';
import { miniLottie } from '../src/index';
describe('mini', () => {
  it('compress', () => {
    const fileList = ['lottie'];
    for (const name of fileList) {
      const inPath = resolve('./test', 'in', `${name}.json`);
      const outPath = resolve('./test', 'out', `${name}.json`);
      const oldStr = readFileSync(inPath, { encoding: 'utf8' });
      const oldData = JSON.parse(oldStr);
      const newData = miniLottie(oldData, { copy: true });
      const newStr = JSON.stringify(newData);
      writeFileSync(outPath, newStr, { encoding: 'utf8' });

      // lottie: old: 77118, mini:75828
      console.log(`${name}: old: ${oldStr.length}, mini:${newStr.length}`);
    }
  });
});

还是有一丢丢效果的, 后面再完善吧

up-e9db5791f7e778d95c1254cb859f5b99937.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lottie-web是一个开源的JavaScript库,用于在Web上渲染和播放Lottie动画。Lottie动画是由Adobe After Effects创建的矢量动画,可以使用Bodymovin插件导出为JSON格式,然后在网页上使用lottie-web库进行渲染和播放。 lottie-web库提供了很多功能和选项,以便开发者可以根据自己的需求使用和定制动画。它可以用于创建交互式的动画效果,如按钮的点击动画、加载动画、进度条动画等。此外,它还支持设置动画的循环次数、播放速度、淡入淡出效果等。 在使用lottie-web时,我们需要引入相关的CSS和JavaScript文件,并通过HTML的canvas元素来创建动画的容器。然后,我们可以使用lottie.loadAnimation()方法来加载并初始化动画,在loadAnimation()方法中,我们可以传入一些参数,如JSON文件路径、容器元素、循环次数等。 一旦动画加载完成,我们就可以使用lottie.play()方法来播放动画,使用lottie.stop()方法来停止动画。此外,还有一些其他的方法,如lottie.pause()方法暂停动画,lottie.setSpeed()方法设置播放速度等。 值得一提的是,lottie-web还支持事件监听,我们可以通过lottie.addEventListener()方法来监听动画的各种事件,如动画加载完成、播放完成等,以便于我们在合适的时机进行相应的处理。 总之,lottie-web文档提供了全面的使用说明和示例代码,可供开发者参考和学习。使用lottie-web,我们可以轻松地在Web上使用Lottie动画,为网页添加更加生动和有趣的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值