google 图片格式的幻数
Magic number for google Image Format
我正在开发 (Node.js) 我自己的小程序来检查文件(图像)类型。到目前为止一切顺利,直到我尝试为 Google WebP 格式添加验证。
作为 Magic Number 的指南,我使用了 file-type 库。在他们的源代码中,他们列出了 WebP 的幻数(第 45 行):
0x57, 0x45, 0x42, 0x50
在我的库中,我只使用了前两个字节。所以我用了0x57和0x45作为参考。
实施后,我需要一个合适的图像样本。所以我挖了this out。那是官方 Google 库示例。
但是我从那里下载的图像具有不同的签名。我得到:
0x52 and 0x49
I also tried to find Magic Number for WebP, but without success. All I was able to find is this Wiki. But it does not provide Magic Number.
现在我希望你能理解我的困境。我应该使用什么信息?来自文件类型库的一个,或者从 Google?
下载的图像样本中获取信息
为了总结这个问题,我应该使用:
0x52 and 0x49 (image signature, downloaded from Google)
或
0x57 and 0x45 (sample from image-type library)
或
something entirely else?
根据 Google 的 WebP Container Specification,有损和无损格式的 WebP 文件 header 均由 12 个字节组成:
- 32位RIFF标签,由'R'、'I'、'F'、'F'四个ASCII字母组成,即0x52、0x49、0x46、0x46 .
- 文件大小减8,指定为little-endian字节顺序的32位无符号整数。
- 32位WEBP标签,由'W'、'E'、'B'、'P'四个ASCII字母组成,即0x57、0x45、0x42、0x50 .
所以你的"image signature, downloaded from Google"显然是RIFF标签的第一个字节对,而"sample from image-type library"是WEBP标签的第一个字节对。存储在文件中或通过互联网传输的 WebP 图像总是包含 RIFF header,因此您应该检查字母 'R'、'I',即 0x52、0x49。
但是请注意,仅检查前两个字节是相当不准确的。安全签名检查将测试 'RIFF' 的前四个字节,跳过四个长度字节,然后检查 'WEBP'.
我正在开发 (Node.js) 我自己的小程序来检查文件(图像)类型。到目前为止一切顺利,直到我尝试为 Google WebP 格式添加验证。
作为 Magic Number 的指南,我使用了 file-type 库。在他们的源代码中,他们列出了 WebP 的幻数(第 45 行):
0x57, 0x45, 0x42, 0x50
在我的库中,我只使用了前两个字节。所以我用了0x57和0x45作为参考。
实施后,我需要一个合适的图像样本。所以我挖了this out。那是官方 Google 库示例。 但是我从那里下载的图像具有不同的签名。我得到:
0x52 and 0x49 I also tried to find Magic Number for WebP, but without success. All I was able to find is this Wiki. But it does not provide Magic Number.
现在我希望你能理解我的困境。我应该使用什么信息?来自文件类型库的一个,或者从 Google?
下载的图像样本中获取信息为了总结这个问题,我应该使用:
0x52 and 0x49 (image signature, downloaded from Google)
或
0x57 and 0x45 (sample from image-type library)
或
something entirely else?
根据 Google 的 WebP Container Specification,有损和无损格式的 WebP 文件 header 均由 12 个字节组成:
- 32位RIFF标签,由'R'、'I'、'F'、'F'四个ASCII字母组成,即0x52、0x49、0x46、0x46 .
- 文件大小减8,指定为little-endian字节顺序的32位无符号整数。
- 32位WEBP标签,由'W'、'E'、'B'、'P'四个ASCII字母组成,即0x57、0x45、0x42、0x50 .
所以你的"image signature, downloaded from Google"显然是RIFF标签的第一个字节对,而"sample from image-type library"是WEBP标签的第一个字节对。存储在文件中或通过互联网传输的 WebP 图像总是包含 RIFF header,因此您应该检查字母 'R'、'I',即 0x52、0x49。
但是请注意,仅检查前两个字节是相当不准确的。安全签名检查将测试 'RIFF' 的前四个字节,跳过四个长度字节,然后检查 'WEBP'.