是否有一些廉价而可靠的方法来检测图像文件是否包含EXIF数据?像“读取前100个字节并搜索 EXIF 子串”这样的东西是非常可取的。我不需要阅读和解析它 - 只知道它是否存在。
关键是必须非常快。最好是C ++。
答案 0 :(得分:1)
您可以查看file (1)
的实现。
你可以只是调用它,当然,你可能不需要file
的其余功能......
答案 1 :(得分:1)
您只需要检查流的前4个字节:
bool IsExifStream(const char* pJpegBuffer)
{
static const char stream_prefix1[] = "\xff\xd8\xff\xe1";
return memcmp(pJpegBuffer, stream_prefix1, 4) == 0;
}
答案 2 :(得分:0)
您可以阅读source of the PHP EXIF extension - 通过查看如何实施exif_read_data,您可能会发现一些线索。
答案 3 :(得分:0)
如果您不需要大量性能,我会使用一些Exif库并让它尝试获取Exif数据(如果存在)。 (pyexif,perl Image :: exif,c#MetaDataExtractor等)
否则,
看看http://en.wikipedia.org/wiki/JPEG#Syntax_and_structure
你需要创建一个简单的二进制解析器来挖出“段代码”,并找到名为APP1的段(如果我理解正确的话)。数据应包含字母“Exif”
e.g。在我的PC上的随机JPEG文件中,字节7-10表示“Exif”。我不知道所有JPEG文件中的位置是否相同。段可以是可变长度的。