免费平铺GIF动画


10

有什么方法可以使用imagemagic / montage来绘制循环的gif动画(与非动画gif混合)?

也就是说,我想将动画串联在空间中,而不是在时间上。我意识到动画中的帧数及其持续时间可能无法将两个动画巧妙地组合在一起。但我对程序进行近似和猜测,以及扩展/重复框架(只要所有框架都以某种方式存在)都很好。

我试过了

convert *.gif -append output.gif

montage *.gif -mode concatenate -tile x1 output.gif

但它们都将动画gif视为多个单独的非动画gif。

我想我可能可以编写一个脚本来按帧将动画的帧分开,根据需要重复/扩展较短的循环以匹配最长的循环,对最长的动画帧中的许多帧重复非动画gif,将相应的帧缝合在一起使用分成单个大框架-append,然后将这些大框架合并为一个大gif。但是,如果通过一些简单的命令已经可以做到这一点,我就不想重新发明轮子。

我当然对除imagemagick以外的其他免费选项持开放态度。



2
我要接受它,因为它可能不是故意的。作为认真的评论。是的,我要平铺GIF。但是永久的,而不是HTML。谢谢你的链接。我将保存该特定的GIF供以后使用。
tsbertalan

1
@tsbertalan您最终弄明白了吗?
塞巴·巴雷

Answers:


1

听起来好像您想在一段时间内匹配多个动画,但这将需要一个程序来读取每个帧及其延迟,然后以某个周期性的频率输出该帧,直到满足延迟为止。例如:1帧,延迟1秒,而您的“频率”为100ms,那么您想以100ms写出10帧吗?然后转换为线性蒙太奇?

那将需要一个程序或庞大的脚本来执行这种处理,并且您必须定义“频率”(此处为100ms)。

但这很好用:(gifsicle是一个包,蒙太奇是imagemagick包的一部分)

gifsicle --unoptimize cool_animation.gif | \
  montage -tile x1 - linear_frames.png

(为便于阅读,行已断开)

第一行将传入的gif分解为单独的帧(到stdout),但填充了图层。最初,如果没有--unoptimize选项,它将提供第一帧,但随后的帧仅包含每次更改的内容。专为怪异的蒙太奇制作!

第二行建立线性输出,获取每个帧图像(来自stdin)并按照您指定的顺序排列它们。'x1'将它们沿水平线排列。

您可以将单个文件名(cool_animation.gif)替换为多个文件名,甚至可以使用通配符* .gif。

我不确定这是您要找的东西。


当修改gifsicle --colors=255 DATA.gif | gifsicle --unoptimize | montage -tile x1 - linear_frames.png为Ƭᴇcʜιᴇ007的测试图像时,这给了我imgur.com/a/Likr9 ; 并非我要找的东西。我不记得最初的目的了;我想我可能只是写了一个脚本来明确地将其分解。
tsbertalan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.