2013-03-26 69 views
3

我有一个很像这个动画的gif,其中动画的循环特性导致一些帧在动画的一个完整循环内重复两次。GIF动画 - 避免重复存储两次帧

enter image description here (来自here

我目前分别存储每一帧中的gif。是否有可能只存储每个重复的帧一次,以有效减半所需的存储空间?

我使用movie2gif converter在MATLAB中创建我的gif,但会很满意使用gif创建或后处理工具的替代方法。

EDIT

我的意思由帧重复在该示例图像的上下文中最好的说明。显示的框架就像左边的球离开一排球。这个确切的帧在几帧后重复,当左边的球现在正在返回时再次击中球的一排。由于帧的排序,目前需要将该帧存储两次。我想要一种保存gif(或后处理gif)的方式,这样我就可以保留完整的动画序列(例如30帧),但重复的帧是柔和的链接回它们的第一个展示,从而消除了将它们存储两次的需要。

+0

比尔,你可以尝试使用'isequal'来检查一个帧在存储之前是否与另一个帧相同。 – Justin 2013-03-26 16:48:31

+0

@jucestain谢谢,我确实已经知道哪些帧是平等的。问题是,如果我只包含独特的帧,那么gif不会很好地循环。在我的问题中,球的例子有一个框架,当左侧的球刚刚被推开时,以及当球刚刚返回时的相同的框架。 – 2013-03-26 18:20:29

回答

1

从movie2gif及其输入参数的描述来看,似乎并不可行。此外,在阅读GIF如何工作(和LZW)压缩时,我可以想象,甚至不可能像这样缩小GIF的大小。

如果您只想保存最低要求的图像,并且不介意在看到图像之前构建图像,那么您可以存储每个图像和索引矢量。

在你的情况下,可能找到一种方法来保存图像的一半,然后在一个循环中播放它:前进 - 后退 - 前进......但我不知道这是否可能。