我在工作场所使用的内部工具有最小图像文件大小限制。不幸的是,我有一个用例需要上传和处理小于此限制的图像文件。
有没有办法填充图像文件的大小而不实际更改图像的内容?我大部分时间都在处理 jpeg 和 png 文件。
答案1
对于 JPEG 通常是,您只需在末尾添加零,这不会影响图像本身。JFIF 和 EXIF(两种 JPEG 文件格式)均不受此影响。一些迂腐的图像处理工具可能会抱怨末尾有多余的数据,但它们仍然可以处理图像。
至于 PNG,我不太了解它的内部工作原理,但你可以尝试添加零,看看它是否有效。很可能它也足够有弹性。
有关 JPEG 的详细信息,供好奇的读者参考。
JPEG 是一种压缩算法,而不是文件格式。有两种文件格式可以容纳 JPEG 压缩图像:JFIF 和 EXIF(后者以“EXIF 标签”而闻名,相机通常用它来存储照片元数据)。它们大多兼容。
FF D8
两种格式都由一个魔数和随后的任意数量的二进制块(称为“段”)组成。每个块都以一个 4 字节标记开头:
- 第一个字节始终是
FF
- 第二个字节是段类型标识符
- 第三和第四个字节是一个 16 位数字,等于段数据长度(以字节为单位)+2(因此比段的累计长度少 2 个字节)
段头后面跟着适当数量的字节。后续段直接附加在末尾。
JFIF 和 EXIF 共享相同的结构和段类型标识符,因此它们“大部分”兼容。“大部分”,因为它们对第一个段有不同的要求。实际上,大多数工具可以处理混合的 JFIF/EXIF 文件,因为这些段具有不同的类型标识符。
所有段都以字节开头FF
,因此添加零会创建无效段。大多数工具似乎都会默默忽略这些。