对于特定任务(在不进行任何数据偏移移动的情况下替换固件内的图像),我需要创建一个大小为 409x240 像素、恰好 6449 字节的 GIF 文件:
- 偏移量 0-5:(
GIF89a
魔术字符串) - ...
- 偏移量 6447-6448: 十六进制
00 3B
当我使用 MSPaint 等创建这样的 GIF 时,输出约为 2 KB,太小了。
问题:有没有办法修改 GIF 文件以使其具有更大的给定大小?我们可以在 GIF 文件末尾附近进行空字节(十六进制00
)填充吗?也许使用 ImageMagick,或者直接使用 HEX 编辑器(我已经有一个)?
答案1
我首先要尝试的是使用null
s 填充 GIF 文件。您可以先尝试简单地添加足够数量的null
s。如果这不起作用,您可以尝试null
在 GIF 文件的最后一个块终止符之前立即添加 s。
您还可以尝试按照 Berend 的建议创建 XMP 注释,并在此处进行讨论:https://superuser.com/a/556337/380110
现在,如果以上方法都不起作用,还有另一种可能性。我们没有您的实际图像文件,所以我不能保证这种方法有效,但绝对值得一试。
GIF 图像支持不同压缩级别的 LZW 压缩。因此,您可以修改文件的压缩级别,以尝试使其达到所需的确切大小。
我不确定 MS Paint 使用什么压缩(如果有的话)来生成您的 2KB 文件,但这是我将尝试的程序:
- 将您的图片上传至:https://www.freeconvert.com/gif-compressor
- 点击“GIF 选项”。
- 选择“撤消优化”。
- 将 GIF 文件保存在本地。
- 查看文件的大小以确定现在是否需要增加或减少其文件大小。
- 使用同一个 Web 应用程序,调整 LZW 压缩级别以调整文件大小。如果需要,您还可以调整颜色数量。
如果文件大小不够,您可以调整图像中的几个像素以获得所需的结果。请记住,对于压缩,LZW 算法主要是寻找相似的像素块。因此,如果您故意使像素块不相似,则会增加文件大小。这不一定是可见的变化。单个像素的略微不同的颜色很可能不会被放大镜任何人发现。您可以在许多区域进行略微不同的更改而不会产生任何可见的差异,但这会增加文件大小。
您还可以确保图像使用 256 种独特颜色的完整调色板。这将使文件变得更大。同样,您可以创造性地做到这一点,以隐藏您使用的独特颜色比渲染图像实际需要的多这一事实。