Json+步骤图转gif动图

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

录屏存成gif是简单的办法.

支持录屏gif的, 比如 ScreenToGif, 或者本论坛的 gif123

这软件可以实现吗?怎么用的呀? ::

录屏的话不是透明底了,有些辉光的地方就出非常不好扣了

初步摸索了下,是通过把步骤图拆分,然后再通过别的软件来合成gif吗?好像没看到软件内可以直接生成gif格式来着?

文件发出来看看?

https://www.123pan.com/s/Hw19-h9w9d

我大概看了一下素材.

{"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实现了。要一个个弄 :::

看了看素材,感觉可以用pillow实现,试了一下,还可以

大图传不上来,缩放了一下
new

卧槽 咋弄的呀 ::

用python重新实现了一下png 到gif的逻辑
(当然,我也不知道最开始的逻辑是啥)

要咋弄呀 大佬! :::::

  1. 下载一个python win10 应用商店里面就有,安装的时候要勾选 python添加到PATH变量下的选项,
  2. 然后 win + r 输入cmd, 或者随便打开一个powershell执行命令"pip install pillow"
  3. 在cmd 或者 powershell 里面运行命令“python png2gif.py json文件名 png文件名 gif文件名”
    脚本在这个里面

密码:6jp1

多谢大佬!

不敢当,就是一个小脚本 :joy: