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