Ved*_*ic. 3 image node.js webp
我正在开发(Node.js)我自己的小程序来检查文件(图像)类型。到目前为止一切顺利,直到我尝试为 Google WebP格式添加验证。
作为 Magic Number 的指南,我使用了文件类型库。在他们的源代码中,他们列出了 WebP 的幻数(第 45 行):
0x57、0x45、0x42、0x50
在我的库中,我只使用前两个字节。所以我用0x57和0x45作为参考。
实施后,我需要一个合适的图像样本。所以我把这个挖出来了。那是官方的 Google 图书馆示例。但是我从那里下载的图像具有不同的签名。我正进入(状态:
0x52 和 0x49 我也尝试为 WebP 找到 Magic Number,但没有成功。我能找到的只是这个Wiki。但它不提供幻数。
现在我希望你明白我的困境。我应该使用哪些信息?来自文件类型库的那个,还是从谷歌下载的图像样本中获取信息?
总结这个问题,我应该使用:
0x52 和 0x49(图像签名,从谷歌下载)
或者
0x57 和 0x45(来自图像类型库的样本)
或者
完全不同的东西?
小智 6
根据 Google 的WebP 容器规范,有损和无损格式的 WebP 文件头均由 12 个字节组成:
所以你的“图像签名,从谷歌下载”显然是 RIFF 标签的第一个字节对,而“来自图像类型库的样本”是 WEBP 标签的第一个字节对。存储在文件中或通过互联网传输的 WebP 图像总是包含 RIFF 标头,因此您应该检查字母“R”、“I”,即 0x52、0x49。
但是请注意,仅检查前两个字节是相当不准确的。安全签名检查将测试前四个字节是否为“RIFF”,跳过四个长度字节,然后检查“WEBP”。