是否有一些简单的方法来检测文件是否有EXIF数据?

时间:2009-09-24 13:29:32

标签: language-agnostic image image-processing exif

是否有一些廉价而可靠的方法来检测图像文件是否包含EXIF数据?像“读取前100个字节并搜索 EXIF 子串”这样的东西是非常可取的。我不需要阅读和解析它 - 只知道它是否存在。

关键是必须非常快。最好是C ++。

4 个答案:

答案 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文件中的位置是否相同。段可以是可变长度的。