2009-09-24 29 views
2

有没有一些廉价和可靠的方法来检测图像文件是否有EXIF数据?类似于“读取前100个字节并搜索EXIF子串”是非常优选的。我不需要阅读和解析它 - 只知道它是否在那里。有没有一些简单的方法来检测文件是否有EXIF数据?

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

+1

是这个特定的一些语言? PHP内置EXIF函数 – 2009-09-24 13:32:13

回答

1

你可以看看file (1)的实现。

可以只是调用它,当然,但你可能并不需要的file小号功能,所以休息...

0

如果你不需要大量的表现,我会用一些的Exif库并让它尝试为您获取Exif数据(如果有的话)。 (pyexif,perl的图片:: EXIF,C#MetaDataExtractor等)

否则,

看看http://en.wikipedia.org/wiki/JPEG#Syntax_and_structure

你需要创建一个简单的二进制解析器也挖掘出了 “段代码”,并找到称为APP1的段(如果我理解正确的话)。数据应包含字母“Exif”

在我个人电脑上的随机JPEG文件中,字节7-10表示“Exif”。我不知道所有JPEG文件中的位置是否相同。段可以是可变长度的。

1

你只需要检查前4个字节流:

bool IsExifStream(const char* pJpegBuffer) 
{ 
    static const char stream_prefix1[] = "\xff\xd8\xff\xe1"; 
    return memcmp(pJpegBuffer, stream_prefix1, 4) == 0; 
} 
+0

问题是我不想解析文件以找到流的开始位置。我不关心流,我用文件工作。 – sharptooth 2009-10-19 11:37:47

相关问题