有没有什么技巧可以制作一个相对较小的电视雪花动画gif?

4
抱歉提前道歉,但这不是一个关于Photoshop的问题。相反,我正在尝试想出一些令人信服并且最大限度地利用gif格式的压缩和特性以产生动画最小可能的文件大小。
一些限制条件: - 它需要至少20或30帧。我试过更少的帧数(由于它们很难压缩,通常情况下15帧的大小只有30帧的一半)。 - 大小不应小于256x192。 - 它不需要彩色,甚至不需要全灰度。我已经看到了只有16个灰度的令人信服的静态图像。 - 它可以有一个图案,但不能是对人眼立即显而易见的。如果某人在一两分钟后能够发现图案(使其可压缩?),那么就可以接受。 - 第2到第n帧可以使用相当多的alpha,但当我开始使用大块的水平条纹时,我的眼睛立刻就能注意到。因此,您不能轻松地通过简单的欺骗来积累大量的RLE。 - 所有上述内容仍然需要以30-33ms帧速好看。没有可变速度或依赖任何显著快于该速度的东西。
还可以接受:符合上述限制条件的APNG。如果您能想出来,甚至可以使用MPEG(我不知道DCT如何运作)。
理想情况下,我可以将其缩小到250k字节范围内,但我会接受任何明显小于上周我制作的9兆怪物的东西。
哦,最后一件事:显然我不希望有人为我提供图形。我只是在寻找一些技巧,以便最终自己实现。

它的压缩效果并不好。你打算如何使用这个图像?如果是在 HTML 中,也许用 Canvas 动态生成会更有效。 - Peter Hall
我并不打算在浏览器中使用它。最终,我希望它能够在VLC中显示,并对其源代码进行调整。我并不真的关心最终的格式是什么,但各种视频格式看起来都不太令人信服。 - John O
+1 这是我在 SO 上一段时间以来看到的最有趣的问题之一。我希望能看到一个优雅的解决方案... - Joe
4个回答

3

这是一个非常有趣的问题。

静态噪声本质上是高度不可压缩的 (随机噪声)。信息理论表明,真正的噪声基本上是不可压缩的,并且包含更多模式的东西越容易被压缩(直到由1或0组成的实线完全可压缩为止)。

理想情况下,可以创建一个真正的噪声生成器(只生成随机数),但这并不能在您的问题的限制条件下解决问题。

我能想到的最好的方法是存储一些小的静态图块,并以错开的方式显示它们,以防止眼睛注意到任何模式。除此之外,您将无法将其压缩超过256 x 192 x 20/2,大约为500千字节(假设使用256 x 192分辨率、4位色深的20帧)。

只需将您的动画gif编码为16色模式即可达到该点。


我知道噪音是不可压缩的。我只是希望能想出一些看起来像噪音的东西,但仍然足够可压缩,这样我就不会为了一个1秒的循环向他们传输8兆字节的数据。我有一种困扰的感觉,认为其中有诀窍,但如果有的话,我也想不到是什么。 - John O
它有8兆的大小很可能是由于编码质量差造成的。如果你使用4位色深进行编码,在该分辨率下的20帧不应超过500kb。 - patros

2

这是一个老旧但仍未被回答的问题(无论如何都没有被检查)

  1. 创建“NoSignal”图像数据

    如果不知道如何创建,请参考以下链接:

  2. 将其编码为gif格式

    稍作尝试后,我使用了分辨率为320x240的最低位分辨率可用是每个像素3位。更低的分辨率效果不好。这里只有单一全局调色板(显然),示例大小为300KB:

    NoSignal 320x240x3

[注]

如果只是为了某个应用程序,则可以在运行时生成图像,代码只需几行,参见第#1条中的链接。


2
“是的,您可以通过有损GIF压缩来实现这一点,或者更确切地说是一个特别设计的压缩器,输出嘈杂的LZW流。
对于LZW压缩来说,最理想的情况是输出X个像素,然后是X+1个像素,然后是X+2个像素等等。很容易使其变得嘈杂。
尝试破坏gfc_lookup函数,以(几乎)总是返回最长的字典项,并用它压缩一系列嘈杂的帧:”

https://github.com/pornel/giflossy/blob/master/src/gifwrite.c#L270


1
通常情况下不容易做到。高熵的良好随机性定义上不易被压缩。将其变成灰度或许有所帮助,但效果不大。
如果您想在网页上实现这个功能并且您有(一些)控制权,您可以编写一小段JS代码来帮助您... 如果您能够做到这一点,那么您可以按照以下步骤操作:
1.创建一个大小为您需要的1.5倍的高熵静态gif。 2.设置要裁剪的大小。 3.然后通过更改起始偏移量随机移动它。
只要您的偏移量彼此之间足够远(并且不重复模式),通常很难将其识别为运动,看起来就像真正的静态图像。
我大约20年前在Amiga上使用这个技巧来模拟有限内存演示中的静态效果,效果非常好... 它也不需要快速的低级代码,因为所有工作都是通过更改偏移量完成的,协处理器执行了其余的位块传输操作。

这不是用于网页的。它将直接在VLC中显示。我知道真正的随机性无法压缩,但我希望有一些欺骗人类认知的东西来制造幻觉。 - John O

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接