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

Language agnostic 是否有一些简单的方法来检测文件是否有EXIF数据?,language-agnostic,image,image-processing,exif,Language Agnostic,Image,Image Processing,Exif,是否有一些廉价可靠的方法来检测图像文件是否有EXIF数据?像“读取前100个字节并搜索EXIF子字符串”这样的内容是非常可取的。我不需要阅读和解析它,只需要知道它是否存在 关键是它必须非常快。C++是比较好的。 你可以通过查看ExeFixRead数据的实现来阅读,你可以找到一些线索。 < p>你可以看一下.< /p>的实现。 当然,您可以直接调用它,但您可能不需要文件的其余功能,因此…如果您不需要高性能,我会使用一些Exif库,让它尝试为您获取Exif数据(如果存在)。(pyexif、perl

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


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

你可以通过查看ExeFixRead数据的实现来阅读,你可以找到一些线索。

< p>你可以看一下.< /p>的实现。
当然,您可以直接调用它,但您可能不需要
文件的其余功能,因此…

如果您不需要高性能,我会使用一些Exif库,让它尝试为您获取Exif数据(如果存在)。(pyexif、perl Image::exif、c#MetaDataExtractor等)

否则,

看看

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


e、 g.在我电脑上的随机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;
}

这是特定于某种语言的吗?PHP内置了EXIF函数问题是我不想解析文件以找到流的起始位置。我不关心流,我用文件工作。