设计师小姐姐给的 Lottie 动画中“带图片”,如何预览?


一、序

大家好,我是承香墨影!

我又来写 Airbnb 开源的 Lottie 动画了,之前写的几篇文章,反响还不错,今天继续说说 Lottie 预览效果的问题,单独的 Lottie-JSON 文件,预览非常的简单,官方提供的 proview 网页和 Lottie App 都提供了预览的方式。

但是还有另外一种 Lottie 动画资源,是 JSON + 图片文件的动画资源,此时就无法直接预览了。

本文就来说说,如何在开始编码前,在手机上预览带图片资源的 Lottie 动画效果。

二、Lottie 的动画资源分类

2.1 Lottie 资源的不同

Lottie 是 Airbnb 开源的一套跨平台的完整的动画效果解决方案,真正的做到了在客户端 100% 还原设计师的动画效果。设计师只需要使用 After Effectes(AE)设计出动画,再使用 BodyMovin 插件将动画导出成 JSON 文件,就可以在 iOS、Android 和 RN 上 100% 还原动画效果。

Lottie 这种工作方式,是对不同的角色进行解耦,带来了更简洁的工作流。开发小哥哥不再担心动画实现困难,设计师小姐姐也不需要担心实现的效果会有偏差。

再说回到本文的主题,动画预览的问题。

设计师交付给我们的动画资源。都是静态的。虽然通常会有配套的动画播放视频。但是我们依然想在手机上真实的看看动画播放的效果,才能放心的投入编码的过程中。

如果你对 Lottie 有了解(不了解也没关系,文末有几篇介绍 Lottie 的文章,可供查阅),你就会知道,设计师交付的动画通常有两种:

  1. 单独的 JSON 文件。

  2. JSON + 图片资源。

对于单独的 JSON 动画文件,官网上有一个 h5-preview (https://www.lottiefiles.com/preview)的网站,将 JSON 文件拖拽进去就可以实现预览。同时在预览页面底部,会生成一个二维码,通过手机 App Lottie 中的扫码功能,就可以实现在手机端预览了。

而对于第二种动画资源,JSON + 图片文件的预览,就没这么方便了。无论是 Preview 页面还是 Lottie App,都无法直接预览 JSON + 图片这种动画效果。

2.2 为什么会有不同的格式

有人很奇怪,为什么 AE 做出的动画,导出的动画资源会有所不同。

其实这取决于 AE 动画的制作过程。如果动画操作的图片资源都是矢量图格式的,最终导出的动画就是一个单独的 JSON 文件,它会将矢量图硬编码到 JSON 文件中。

相反,如果 AE 动画操作的资源是一张张的图片,则在导出的 Lottie 动画资源中,就会包含一个 images 文件夹,其中就包含了 Lottie 动画所需要的图片文件。

就是这么一点区别,就导致了导出的动画资源不同。

如果有必要,我们可以倒推设计师小姐姐,将动画中所用到的图片都矢量化,最终只导出一个 JSON 文件供我们使用。但是如果这样操作,后续动画资源的替换就不够灵活。

例如上图这种动画,其实包含了三张图片资源,分别是信封、黄色的箭头、收信的文件夹。

如果后续的产品需求,说要在信封图片上加一个红心,很正常的需求对吧?此时若是使用的图片资源,设计师只需要再给出一张带红心的信封图片,开发替换一下图片资源就好了,大家都很方便简单。

你看,换一个动画效果可能就是换一个操作的图片资源就好了。本地资源当然随便换了,换 JSON 和换图片,对开发来说工作量是一样的。但是换个思路呢?动画中的图片,来自线上的资源,是根据场景动态设置的。除了穷举让设计师出很多套不同的 Lottie 资源,然后按需显示之外,使用带图片的 Lottie 动画,就显得非常简单了。

三、预览带图片的 Lottie 动画

说完了为什么会存在带图片的 Lottie 动画,以及它的使用场景,再说回到本文的主题中,如何在着手编码前,就预览设计师小姐姐交付的动画效果呢?

其实到这里还是需要借助 Lottie App,在新版本的 Lottie App 的 Preview Tab 页面下,有个 “Enter a URL to a json or zip file”,选它就对了。

它接受的是一个 URL,并且支持导入 zip 文件,这里只需要传入一个 JSON + 图片 的 zip 包的 URL,就可以了。

压缩文件的结构如下:

我们可以在本机上,使用 Python 搭建一个最简单的 HTTP 服务器。在本地动画 ZIP 包文件的文件夹下,执行下面的命令。

python -m SimpleHttpServer 8099

该命令会在本机上搭建一个 HTTP 服务器,监听 8099 端口,了解更多可以参考这篇文字☞《一行 Python 命令的 HTTP 服务器》。

最开始我以为可以使用 Android 自己的文件系统路径来充当 URL,后来发现不行,必须是一个服务器上的 zip 包,才可以通过 Lottie App 进行预览。

四、总结时刻

Lottie 动画我是非常喜欢用的,在团队里也一只在推广它,真正的实现了客户端和设计师在动画效果上的解耦,开发小哥方便实现,设计师小姐姐也不用担心程序还原的动画效果不好。

这里推荐几篇之前的和 Lottie 相关的文章:

本文对你有帮助吗?留言、点“好看”、转发是最大的支持,谢谢!


「联机圆桌」????推荐我的知识星球,一年 50 个优质问题,上桌联机学习。

公众号后台回复成长『成长』,将会得到我准备的学习资料,也能回复『加群』,一起学习进步;你还能回复『提问』,向我发起提问。

<think>好的,用户现在问的是如何用LottieFiles将帧动画图片转换成Lottie动画。之前他已经了解过两种方法,一种是生成序列帧的Lottie,另一种是用AE重新设计矢量动画。现在他可能已经尝试过这些方法,或者觉得手动转换太麻烦,想用更简便的在线工具。 首先,我需要确认LottieFiles是否支持直接上传图片序列转换为Lottie。根据之前的回答,LottieFiles在线编辑器可能不直接支持图片序列转Lottie,但可能有其他方法。用户可能已经看过之前的建议,现在想用LottieFiles这个平台来操作,可能认为它更简单。 接下来,我要回忆LottieFiles的功能。LottieFiles官网有转换工具,比如GIF转Lottie,或者AE插件导出。但如果是帧动画图片,可能需要先合成GIF,再转换成Lottie。或者用户可能需要使用其他工具生成JSON,再上传到LottieFiles进行调整。 用户可能不太熟悉如何将多个图片帧整合成一个动画格式,比如GIF或者视频,然后再用在线工具转换。这时候需要分步骤说明,可能需要先准备图片序列,转成GIF,再用LottieFiles的转换工具。 另外,用户可能有性能方面的顾虑,之前的回答提到过序列帧的JSON文件较大,性能差,所以可能需要提醒用户注意优化,或者考虑其他方法如AE重做矢量动画。 还需要检查是否有其他替代方法,比如使用LottieLottieTools或其他脚本工具将图片序列直接生成JSON,但用户可能更倾向于使用LottieFiles的在线服务,因此需要提供适合该平台的步骤。 可能存在的误区是用户认为LottieFiles可以直接上传多个图片生成Lottie,但实际上可能需要中间步骤。这时候需要明确说明流程,避免用户困惑。 最后,要确保回答清晰,分步骤说明,可能包括准备图片、转换为GIF、使用LottieFiles的转换工具、调整和导出,以及注意事项和替代方案。同时,保持语气友好,提供帮助选项,比如是否需要进一步的具体操作指导。</think>通过 LottieFiles 将帧动画图片转换为 Lottie 动画,可以借助其在线工具 **GIF/Video to Lottie** 功能。以下是详细步骤: --- ### **一、准备工作** 1. **整理帧动画图片**: - 确保图片按顺序命名(例如 `frame_001.png`, `frame_002.png`)。 - 图片格式建议为 **PNG**(透明背景)或 **JPG**(不透明)。 - 所有图片尺寸需一致。 2. **生成 GIF/视频(关键步骤)**: - 使用工具将帧动画图片合成一个 **GIF** 或 **MP4 视频**: - **在线工具**:EZGIF([https://ezgif.com/maker](https://ezgif.com/maker)) - **本地工具**:Photoshop(文件 > 导入 > 视频帧到图层)。 --- ### **二、通过 LottieFiles 转换** #### 步骤 1:访问转换工具 打开 LottieFiles 的 **GIF/Video to Lottie** 页面: [https://lottiefiles.com/tools/video-gif-lottie-converter](https://lottiefiles.com/tools/video-gif-lottie-converter) #### 步骤 2:上传 GIF/视频 - 点击 `Upload File`,选择生成的 GIF 或视频文件。 - 支持格式:`GIF`、`MP4`、`WebM`、`MOV`。 #### 步骤 3:调整参数(可选) | 参数 | 说明 | |------|------| | **Trim** | 裁剪动画时长(如仅保留前 3 秒) | | **Loop** | 设置循环播放(默认开启) | | **Quality** | 降低分辨率以缩小文件体积 | #### 步骤 4:生成并下载 Lottie JSON - 点击 `Convert`,等待转换完成。 - 下载生成的 `JSON` 文件(如 `animation.json`)。 --- ### **三、在项目中使用** 1. **Android/iApp**: - 将 JSON 文件放入 `res/raw/`(Android)或项目资源目录(iOS/Web)。 - 通过 `LottieAnimationView` 加载: ```xml <com.airbnb.lottie.LottieAnimationView app:lottie_rawRes="@raw/animation" app:lottie_loop="true" app:lottie_autoPlay="true" /> ``` 2. **Web 端**: - 使用 `lottie-web` 库加载 JSON: ```javascript lottie.loadAnimation({ container: document.getElementById("lottie-container"), renderer: "svg", loop: true, autoplay: true, path: "animation.json" }); ``` --- ### **四、注意事项** | 问题 | 解决方案 | |------|----------| | **文件体积过大** | 降低 GIF/视频分辨率,或减少帧率(如 15 FPS) | | **背景不透明** | 在转换前确保 GIF 有透明通道(使用 PNG 序列) | | **动画卡顿** | 检查 JSON 文件是否超过 1MB,建议优先使用矢量动画 | --- ### **五、替代方案(无 GIF 转换工具时)** 1. **直接生成 Lottie 序列帧**: - 使用脚本工具(如 [lottie-tools](https://github.com/airbnb/lottie-android/tree/master/lottie-tools))将图片序列打包为 JSON。 - 手动编写 JSON 结构(参考下方模板): ```json { "v": "5.9.0", "fr": 24, "layers": [ { "ty": 2, // 图片层类型 "assets": [ { "id": "frame_001", "p": "frame_001.png" } ], "st": 0, // 起始帧 "op": 24 // 结束帧(帧数 = 图片数量) } ] } ``` 2. **使用 Adobe After Effects**: - 导入图片序列为 AE 合成 → 通过 Bodymovin 插件导出为 Lottie([教程](https://lottiefiles.com/school/lessons/getting-started-with-lottie-animations))。 --- ### **六、效果对比** | 方法 | 文件体积 | 性能 | 适用场景 | |------|----------|------|----------| | **GIF 转 Lottie** | 中等(依赖分辨率) | 一般 | 简单动画 | | **AE 矢量动画** | 极小(10~100KB) | 最佳 | 复杂动效 | 如果需要更具体的操作指导(如 GIF 合成步骤),可以告诉我你的帧动画图片数量及分辨率,我会提供定制建议!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值