剪映缓存的贴纸,是json+步骤图的形式留存的,想问下有没有办法可以转换成gif动图来直接使用?

录屏存成gif是简单的办法.
支持录屏gif的, 比如 ScreenToGif, 或者本论坛的 gif123
这软件可以实现吗?怎么用的呀? ::
录屏的话不是透明底了,有些辉光的地方就出非常不好扣了
初步摸索了下,是通过把步骤图拆分,然后再通过别的软件来合成gif吗?好像没看到软件内可以直接生成gif格式来着?
文件发出来看看?
我大概看了一下素材.
{"h":280,"w":280,"x":0,"y":0},"trimmed":"false","rotated":"false"},{"filename":"gif_7.png","frame":{"h":280,"w":280,"x":0,"y":280},"sourceSize":{"h":280,"w":280},"spriteSourceSize":
ani.info.json 是把素材图片分割成多个图片的定位数据
data = "ani_info.json", source = "SequenceMap.png"
InfoSticker.lua 脚本则是依据 ani.info.json 和 源图片 来生成 动画.
function InfoSticker: new()
local o = {}
setmetatable(o, self)
self.__index = self
local viewer = director:getViewer()
local width = viewer:getWidth()
local scale = width / 720.0 * 1.000000
o.entity = scene:createEntity("infoSticker"..math.random())
o.entity: getTransform():setScale(scale)
o.entity: addSpriteComponent():getSprite(): setTexture(director:getTextureById(0))
local controller = o.entity:addAnimatorComponent(): getController()
controller: setFps(25)
EffectSdk.AnimationFactory.createFrameAnimation(controller, "frame")
controller: getAnimationState("frame"):setLoop(true)
controller: getAnimationState("frame"):setFreeze(true)
controller: playAnimation("frame")
local curve = EffectSdk.Line2D.create(EffectSdk.Vec2(0, 0), 5)
EffectSdk.AnimationFactory.createScaleAnimation(controller, "easeInAnimation", curve, 0.2, false, 1.0)
local curve = EffectSdk.Line2D.create(EffectSdk.Vec2(0, 1), -5)
EffectSdk.AnimationFactory.createScaleAnimation(controller, "easeOutAnimation", curve, 0.2, false, 1.0)
return o
end
尽管理论上可以写脚本来实现gif的保存, 但是具体到剪映是怎么运作的, 库是如何调用, lua是怎么运行的, 咱也不知道. 如果能摸清, 说不定也可能通过修改lua脚本就保存成功了.
另外, 还有一个理论可行的方法就是, 通过这段代码, 用其他语言, 来重写类似的功能.
不过有些特效的调用, 可能无法模拟. 比如 EffectSdk
太复杂了,完全看不懂 ::
我只能用笨方法了,把步骤图手动拆分成多张,然后通过ps打开图像序列,自动生成时间轴,然后再手动导出gif实现了。要一个个弄 :::
卧槽 咋弄的呀 ::
用python重新实现了一下png 到gif的逻辑
(当然,我也不知道最开始的逻辑是啥)
要咋弄呀 大佬! :::::
- 下载一个python win10 应用商店里面就有,安装的时候要勾选 python添加到PATH变量下的选项,
- 然后 win + r 输入cmd, 或者随便打开一个powershell执行命令"pip install pillow"
- 在cmd 或者 powershell 里面运行命令“python png2gif.py json文件名 png文件名 gif文件名”
脚本在这个里面
密码:6jp1
多谢大佬!
不敢当,就是一个小脚本 ![]()


