有没有一些廉价和可靠的方法来检测图像文件是否有EXIF数据?类似于“读取前100个字节并搜索EXIF子串”是非常优选的。我不需要阅读和解析它 - 只知道它是否在那里。有没有一些简单的方法来检测文件是否有EXIF数据?
关键是它必须非常快。 C++是最好的。
有没有一些廉价和可靠的方法来检测图像文件是否有EXIF数据?类似于“读取前100个字节并搜索EXIF子串”是非常优选的。我不需要阅读和解析它 - 只知道它是否在那里。有没有一些简单的方法来检测文件是否有EXIF数据?
关键是它必须非常快。 C++是最好的。
您可以阅读source of the PHP EXIF extension - 通过查看exif_read_data是如何实现的,您可能会找到一些线索。
你可以看看file (1)
的实现。
您可以只是调用它,当然,但你可能并不需要的file
小号功能,所以休息...
如果你不需要大量的表现,我会用一些的Exif库并让它尝试为您获取Exif数据(如果有的话)。 (pyexif,perl的图片:: EXIF,C#MetaDataExtractor等)
否则,
看看http://en.wikipedia.org/wiki/JPEG#Syntax_and_structure
你需要创建一个简单的二进制解析器也挖掘出了 “段代码”,并找到称为APP1的段(如果我理解正确的话)。数据应包含字母“Exif”
在我个人电脑上的随机JPEG文件中,字节7-10表示“Exif”。我不知道所有JPEG文件中的位置是否相同。段可以是可变长度的。
你只需要检查前4个字节流:
bool IsExifStream(const char* pJpegBuffer)
{
static const char stream_prefix1[] = "\xff\xd8\xff\xe1";
return memcmp(pJpegBuffer, stream_prefix1, 4) == 0;
}
问题是我不想解析文件以找到流的开始位置。我不关心流,我用文件工作。 – sharptooth 2009-10-19 11:37:47
是这个特定的一些语言? PHP内置EXIF函数 – 2009-09-24 13:32:13