我有一系列 1bpp 的 BMP(1 位色深,当然是黑白的)。我想将它们组合成一个具有 1 位色深的 GIF 动画。这可能吗?
到目前为止,我已经尝试过ffmpeg
,但输出始终是 8 位深度。使用-pix_fmt monob
没有帮助,它始终默认为gray
(即 8 位深度)。我使用在线 GIF 优化器 (ezgif)(以某种方式)将其降低到 6 位深度,但从未获得我想要的 1 位深度。
这样做的原因是我希望文件大小尽可能小,我认为使用 8 位来制作黑白 GIF 是一种浪费。最终,该 GIF 将转换为存储在微控制器上的 C 数组。
答案1
为了答案的完整性:
GIF 无法做到这一点!GIF 仅支持像素格式 Indexed8bpp。这是 256 种颜色的索引调色板,您可以将调色板缩减为两种颜色,但每个索引仍将使用 8 位。此外,RLE 压缩可能会减小文件大小,但仍然不是 1-bpp。
如果您不仅要寻找动画图像,还要寻找静态图像,请继续阅读。
另一方面,BMP、PNG 或 TIFF 可以生成像素格式 Indexed1bpp,而只有 PNG 和 TIFF 支持单色(黑白)1-bpp。您需要能够使用只有两 (2) 种颜色的索引调色板或单色 1-bpp(黑白)的软件。并将像素值映射到这两个 (2) 个索引。选择以像素格式索引 1-bpp 保存 BMP、PNG 或 TIFF;或以像素格式单色 1-bpp 保存 PNG 和 TIFF。Adobe Photoshop 可以使用“图像”菜单中的“模式”来实现这一点。Windows 图像处理组件 (WIC) 本身支持这两种像素格式,因此任何使用 WIC 加载和保存图像的图像编辑软件可能都支持这两种像素格式。否则,对于任何内部解决方案,您都必须检查该解决方案支持的格式。
注意:当像素格式为单色 1-bpp 或索引 1-bpp 时,写入 BMP、PNG 或 TIFF 文件时每个字节应有八 (8) 个像素。