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

发布于 2024-08-05 11:30:48 字数 139 浏览 5 评论 0原文

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

关键是它必须非常快。 C++ 更可取。

Is there some cheap and reliable way to detect if an image file has EXIF data? Something like "read the first 100 bytes and search for EXIF substring" is highly preferable. I don't need to read and parse it - only to know if it is there.

The key is that it must be very fast. C++ is preferable.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

莳間冲淡了誓言ζ 2024-08-12 11:30:48

您可以查看 file (1)

当然,您可以只是调用它,但您可能不需要file的其余功能,所以......

You might look at the implementation of file (1).

You could just call it, of course, but you presumably don't need the rest of files functionality so...

我爱人 2024-08-12 11:30:48

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

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

You only need to check first 4 bytes of the stream:

bool IsExifStream(const char* pJpegBuffer)
{
    static const char stream_prefix1[] = "\xff\xd8\xff\xe1";
    return memcmp(pJpegBuffer, stream_prefix1, 4) == 0;
}
只有一腔孤勇 2024-08-12 11:30:48

您可以阅读PHP EXIF 扩展的源代码 - 通过查看 exif_read_data 的实现方式,您可能会发现一些线索。

You could read the source of the PHP EXIF extension - by looking at how the exif_read_data is implemented, you might pick up some clues.

肥爪爪 2024-08-12 11:30:48

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

否则,

请查看 http:// /en.wikipedia.org/wiki/JPEG#Syntax_and_struct

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

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

If you do not require massive performance, I would use some Exif library and let it try to get the Exif data (if present) for you. (pyexif, perl Image::exif, c# MetaDataExtractor etc)

Otherwise,

take a look at http://en.wikipedia.org/wiki/JPEG#Syntax_and_structure

You need to create a simple binary parser do dig out the "segment codes", and to find the segment called APP1 (if I understand it correctly). The data should contain the letters "Exif"

e.g. in a random JPEG file on my PC, the bytes 7-10 said "Exif". I do not know if the location is the same in all JPEG files. The segments may be of variable length.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文