Lottie 动画导出为 GIF/MP4 以及与 QML 集成演示

news2024/11/20 14:38:14

获取 Lottie 动画文件

lottiefiles 是一个很好的网站, 从上面可以下载到别人分享的 lottie 动画文件.

我们可以下载到多种格式, 下面分别讲解每个格式的下载和适用情景.

下载 JSON 源文件

这是体积最小的格式, 一般在 10kb ~ 100kb 之间. 考虑到 lottiefiles 的服务器在国外, 下载这种格式是最快的.

下载完成后, 我们可以用本地工具将它转换成图像或视频文件. 见下面的 “文件格式转换” 部分.

下载 GIF 文件

lottiefiles 有一个特别强大的功能, 支持编辑 lottie 动画的颜色. 你可以在修改成自己喜欢的颜色后下载成 gif 文件.

但请注意, 免费版只能下载 150x150 大小的 gif, 这对大多数人来说都太小了, 糊得完全不能看. 开通会员后 (个人版 ~20 美元/月) 可以下载自定义大小的高清 gif (而且有更多功能).

如果你只是偶尔心血来潮, 想要下载一个动画, 那么可以考虑上一个格式. 我在后续小节会详细说明如何手动转换格式, 自给自足.

下载 MP4 文件

略. 这里稍微补充一下, 一般来说 mp4 文件体积是比 gif 小的.

Lottie 源文件 (JSON) 转其他格式

准备工作

  1. 安装 python (推荐 3.8+, 本人在 3.11 上做了测试).

  2. 安装以下 python 库:

    # 核心库
    lottie  # 用于转换各种格式
    
    # 下面这些选择其中一种或几种安装.
    pillow  # 用于生成图像, 包括动态图
    opencv-python  # 用于生成视频
    cairosvg  # 用于生成矢量图形
    
  3. 此外, 如果要生成视频, 还需要安装 ffmpeg. (请自行搜索安装方法.)

开始转换

打开命令行, 操作:

# 假设我们的 python 路径为 <python>, json 文件路径为 <json>, 输出的文件为 <output>.
# ps: 如果不清楚自己的 python 路径, 输入 `py --list-paths` 可以看到.

# 生成 gif
py <python>/scripts/lottie_convert.py <json> <output>
#   示例: py "c:/programs files/python311/scripts/lottie_convert.py" d:/demo/input.json d:/demo/output.gif

# 生成 mp4
py <python>/scripts/lottie_convert.py <json> <output>
#   lottie_convert 会自动根据 output 的后缀名来判断生成什么格式的文件.

至此, 我们已经得到了动图文件或视频文件. 接下来可以用于 qml 布局中了.

添加到 QML 布局

下面给出的是 qml 的示例代码:

// demo.qml
// 注意: 我用的是 qt 6.4 (pip install pyside6). 如果你用的是 qt 5, 需要改一下 import 语句 (见下面的注释).

// qt 6 导入语法 (只用导入一个模块)
import QtQuick
// qt 5 导入语法 (尾部需要加版本号, 要导入两个模块)
//  import QtQuick 2.15
//  import QtQuick.Window 2.15

Window {
    width: 800
    height: 600
    visible: true

    AnimatedImage {
        anchors.centerIn: parent
        width: 400
        height: 400
        fillMode: Image.PreserveAspectFit
        smooth: true
        source: 'demo.gif'  // 请替换成你的实际文件路径
    }
}

运行看一下效果:

# 请预先安装 pyside6 和 lk-qtquick-scaffold
py -m lk_qtquick_scaffold run demo.qml

疑难解答

Q: 使用 JSON 转 GIF/MP4, 为什么背景色是黑色?

这是因为从 lottiefiles 网站下载的 json 文件不包含背景信息. 虽然在 lottiefiles 的在线编辑器中可以调整背景色, 但只有 lottiefiles 官方的下载通道才能获得有背景色的图像.

如果你只是偶尔想获取获取一个动画, 不想为此付费成为会员, 下面介绍一个比较 hack 的方法:

  1. 下载 screen 2 gif 软件.
  2. 打开 lottiefiles 在线编辑器, 调节成你想要的颜色.
  3. 把播放模式改为单次播放.
  4. 打开 screen 2 gif, 开始录制, 让在线编辑器完整地播放一遍.
  5. 此时我们录制的 gif, 头尾都会有一些多余的重复帧, 请自己手动删除.
  6. 用 screen 2 gif 导出 (这个工具支持导出为 gif, webp, mp4 (需要预先安装 ffmpeg) 等格式).

总的来说, 虽然步骤有些繁琐, 但效果还是不错的, 适合非付费用户临时解决, 自给自足.

补充: 还有一个方案是使用滤镜或者 ps/ae/pr 来调整背景色, 由于本人不熟悉, 没有做过研究.

Q: 我只有 JSON 文件, 该怎么修改 Lottie 的颜色表?

参考 https://stackoverflow.com/questions/59380353/lottie-animation-json-cannot-find-the-color

笔者没有实际试过, 不保证可行.

Q: 为什么不使用 Qt 自带的 LottieAnimation 类, 直接加载 JSON 不就行了吗?

qt 6.0+ 已经移除了 Qt.labs.lottiesqt 模块, 没有这个类了.

另外 5.0+ 虽然有支持, 但功能不够完善, 需要自行尝试踩坑.

相关链接

  • https://lottiefiles.com/
  • https://gitlab.com/mattbas/python-lottie/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

锂热电池检测设备 你一定没见过这种检测方式!

项目需求 用户希望纳米Namisoft帮他们设计开发一款系统&#xff0c;要求系统软件安装在PC控制装置上&#xff0c;系统通过使用USB、RS232、LAN通讯接口实现对锂电池测试过程中所用到的仪器&#xff08;内阻测试仪、扫码枪、触摸显示器和电源模块等&#xff09;进行软件控制&…

浸没式冷却-散热技术新趋势,一起学Flotherm电子元器件散热仿真

作者&#xff1a;Billy&#xff0c;仿真秀专栏作者 随着电子元器件功率的上升&#xff0c;散热成为技术发展的瓶颈之一。单纯的风冷在一些情况下无法满足散热需求&#xff0c;直接式液冷和间接式液冷因其可以提供更大量级的对流换热系数&#xff0c;带走更多的热量&#xff0c…

基于智能优化算法PSO/GWO/AFO+柔性车间生产调度(Matlab代码实现)

目录 1 柔性车间生产调度 2 运行结果 3 参考文献 4 Matlab代码实现 1 柔性车间生产调度 随着经济全球化的不断加深和市场竞争的日益严峻,传统的单一车间制造模式已经无法满足我国制造业的生产需求,分布式生产制造模式已经成为企业提高生产竞争力的重要手段。由于不同工厂之…

[附源码]计算机毕业设计校友社交系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

目标检测算法——3D公共数据集汇总 2(附下载链接)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f384;&#x1f384;近期&#xff0c;小海带在空闲之余&#xff0c;收集整理了一批3D公共数据集供大家参考。 整理不易&#xff0c;小伙伴们记得一键三连喔&#xff01;&#xff01;&#xff01;&…

微服务自动化【Docker-Compose】

目录 1. docker-compose 2. docker-compose安装与配置 3. docker-compose.yml 配置文件基本介绍 3.1 version: 指定 docker-compose.yml 文件的写法格式 3.2 services&#xff1a;多个容器集合 4. docker-compose 基本指令 5. docker-compose 网络 5.1 指定网络模式 …

不懂业务不清楚指标?这40套可视化大屏模板,让你突破职场天花板

报表可以说是中国职场的一大特色&#xff0c;不少职场人需要每天做各种报表给领导或者业务决策者看&#xff0c;为此甚至诞生了不少的“表哥表姐”。但很多人在做报表的时候其实并不懂业务&#xff0c;需要找业务确定业务指标才做的下去。 今天我就分享40多个报表模板&#xf…

Spark 3.0 - 10.Ml 常用 Sample 采样方法

目录 一.引言 二.数据准备 三.随机采样 Sample 四.按权重拆分 randomSplit 五.分层采样 sampleByKey 六.总结 一.引言 使用 Spark 进行机器学习、数据分析等项目时&#xff0c;常常需要对数据进行采样&#xff0c;下面介绍三种最常用的采样方法&#xff1a; A.随机采样:…

Vue3 学习笔记 —— 自动导入 Vue3 APIs、v-model

目录 1. 自动导入 Vue3 APIs —— unplugin-auto-import/vite 2. v-model 2.1 相较于 Vue2&#xff0c;Vue3 做出了哪些变化&#xff1f; 2.2 绑定一个 v-model 2.2.1 父组件 2.2.2 子组件 2.3 绑定多个 v-model 2.3.1 父组件 2.3.2 子组件 2.4 v-model 中的自定义修…

Android Material Design之ShapeableImageView(十三)

效果图 资源引入 implementation com.google.android.material:material:1.4.0属性 属性描述android:id控件idandroid:layout_width控件长度android:layout_height控件高度app:shapeAppearance控件外观样式app:strokeWidth画笔粗度app:strokeColor画笔颜色android:src图像资源…

MySQL逻辑架构

逻辑架构剖析 服务器处理客户端请求 数据库查询请求流程&#xff1a; 连接层 系统&#xff08;客户端&#xff09;访问 MySQL 服务器前&#xff0c;做的第一件事就是建立 TCP 连接。 经过三次握手建立连接成功后&#xff0c; MySQL 服务器对 TCP 传输过来的账号密码做身份认…

了解Wi-fi频段概念

前言 信道带宽&#xff0c;应该了解wi-fi频段&#xff0c;这样才能分析有多少信道带宽可用&#xff0c;以及如何在没有任何干扰&#xff08;失真&#xff09;的情况下有效地使用它。 2.4GHz和5GHz频段可用于wi-fi。 2.4 GHz Wi-Fi频段&#xff1a;在2.4 GHz频段&#xff0c;…

通过Shell脚本自动安装HiveJDBC测试提供CDH5网盘地址

〇、参考地址 1、Linux下编写脚本自动安装hive https://blog.csdn.net/weixin_44911081/article/details/121227024?ops_request_misc%257B%2522request%255Fid%2522%253A%2522163695916016780269859534%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%252…

Linux——网络配置(重点)

目录 一、查看网络IP和网关 1.1 那怎么看连接成功呢&#xff1f; 1.1.1 虚拟机接受主机 1.1.2 主机可以接收到虚拟机 1.2 怎么查看电脑的IP地址 方法一&#xff1a; 方法二&#xff1a; 1.3 怎么查看虚拟机的IP地址 二、网络连接模式 2.1 基本了解 2.2 VMware三种网络…

夯实算法-每日温度

题目&#xff1a;LeetCode 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。…

【关系抽取】基于Bert的信息抽取模型CasRel

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

冒名顶替综合症:悄悄地杀死你的梦想

如今&#xff0c;越来越多的开发人员自学成才&#xff0c;很容易消极地与那些拥有计算机科学学士学位或硕士学位的同事进行比较&#xff0c;但请不要这样做。 你们中的很多都很出色&#xff0c;只是你们不清楚这一点。看到那些认为自己不够优秀&#xff0c;但实际上很了不起的人…

MySQL语句

目录 一、常用查询 二、高级SQL语句 1、按关键字排序 单字段排序 按分数降序排列 结合条件过滤 多字段排序 查询学生信息先按兴趣id升序排列&#xff0c;相同分数的&#xff0c;id按升序排列 区间判断及查询不重复记录 嵌套/多条件 对hobbyid进行分组查询&#xff0c…

RabbitMQ学习笔记之Work Queues

工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务&#xff0c;而不得不等待它完成。 相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进 程将弹出任务并最终执行作业。当有多个工作线程时&#xff0c;这些工作线程将一起…

Nacos2.0.3集群搭建

集群搭建 前置条件 JDK 1.8MySQL 5.7.29Nacos 2.0.3 搭建过程 将Nacos安装包上传至三个服务器&#xff0c;本次搭建使用三个端口来模拟三个不同的主机解压&#xff1a; tar -zvxf nacos-server-2.0.3.tar.gzNacos持久化&#xff0c;首先确保服务器已经安装MySQL(Nacos持久化要…