为什么添加徽标时 GIF 的大小会增加,尽管颜色数量保持不变?

平面设计 adobe-photoshop gif 文件大小
2022-02-08 06:30:29

我有一个大约 2 MB 大的动画 GIF。当我在 Photoshop CS 5 中打开它时,添加一个带有徽标的图层,然后将其保存为网络,它突然 4 MB 大。

为什么?没有更多的颜色或任何东西,为什么尺寸会增加?

有问题的图片是 NSFW,我不能在这里发布。

4个回答

颜色数字只是游戏的一半。另一种是对图片进行减色后的压缩。这种无损压缩按扫描线顺序搜索重复模式。

长话短说:当您添加徽标时,您会增加图像的可变性和熵。图像中的熵越多,压缩越差,因为计算机无法再找到尽可能多的重复模式。因此,粗略地说,图像的复杂性加倍会使文件大小加倍。

尽管 joojaa 大部分是正确的,但实际上 GIF使用运行长度编码。他们使用LZW 算法

基本上,该算法可以利用水平像素条的精确重复。这对于纯色和常规抖动模式(例如棋盘模式)非常有效。

然而,LZW 只能“记住”4096 个不同的像素条,因此图像中的变化越多,这些条平均越短,得到的压缩就越少。

底线:如果您简化您的徽标(更多纯色和规则图案),或从徽标中的其余图像“借用”常见像素条,或将徽标的颜色更改为更频繁出现的颜色图像的其余部分,文件大小应该减小。

正如其他答案中提到的那样,以前更均匀的图片上的任何变化都会使压缩变得悲观。尽管如此,我认为这不会为 2Mb 带来两倍的增长(除非您的徽标实际上与图像本身一样大)。

可能是原始图像具有最大压缩并删除了所有不必要的标头/元信息,并且 PS 添加了许多自己的东西或没有使用最大压缩。尝试通过类似工具运行您的新 gif gifsicle,看看它是否有帮助。如果你不是很在意图片格式,你可以试试pngout+deflopt看看 .png 有多大。

除了对每个单独的图像进行常规 GIF 压缩之外,动画 GIF 还可以选择在下一帧和已经在屏幕上的帧之间应用数学运算,并将较小的图像放在图像画布上的较小区域中。

因此,假设您有一个 10 帧的动画 GIF,它是一个在画布上行走的黑白简笔画。第一张图像将是完整的,填满画布,并拥有所有需要的信息,就好像它是一个独立的 GIF 一样。下一个“框架”可能仅包含一个较小的框,该框仅更新已更改的区域。

对于视频动画 GIF,这更加复杂。由于抖动,您经常会发现整个帧都发生了变化,因此它会更大。

如果从一个好的视频源开始,一些 GIF 优化软件可以进行显着的优化。此外,该软件可以做出一些权衡来改善(减小)大小,但会影响动画 - 例如可能更糟糕的抖动。

但是,如果您从这样的 GIF 开始并对其进行更改,即使是在一些小的方面,您也不一定期望该软件(在本例中为 photoshop)能够应用相同的优化,因为它缺少原始源视频. 此外,它甚至可能不会以允许它通过优化重新创建原始 GIF 的方式在内部存储它。尝试打开动画 GIF,然后将其导出为新的动画 GIF,而不做任何更改。大小增加可能仅仅是因为它没有使用任何优化并且正在存储每个完整的帧。

一旦你改变了框架,你会发现尺寸无论如何都会增加,即使进行了优化。如果您使用 Alpha 通道并有一些徽标透明或作为具有半透明的水印,则尤其如此。

您可能可以通过在 photoshop 之后通过 GIF 动画优化器软件运行它来恢复一些优化,而且很多人无论如何都会这样做,因为 Photoshop 重视质量和像素完美而不是尺寸。

不过,理想的解决方案是获取原始视频(不是 GIF,而是视频文件),应用徽标/水印,然后使用专门设计用于优化大小的 GIF 动画程序进行转换。完全跳过 Photoshop。