我正在Delphi中编写一个程序,该程序应该获取使用photo cam拍摄的照片的日期和时间,然后重命名该文件以包含它找到的日期和时间。
到目前为止,我已经通过打开文件作为二进制文件并搜索特殊的字节顺序来实现这一点。然后这些字节后跟日期和时间。所以我遇到了一个问题。实际上很少有问题。
因为它一个接一个地读取文件,所以读取文件是一个缓慢的过程。如果找到日期,它通常在文件的开头,它不需要很长时间,但是如果没有找到“特殊字节顺序”,它将读取整个文件。所以我的方法太慢了。
特殊字节顺序可能会在某些图片中变化(我不知道为什么),即使它是用同一台相机拍摄的。因此,我的程序有时无法在文件中找到日期,即使它在那里。
Windows资源管理器在所有图片中找到日期都没有问题,所以我想也许有某种特殊功能可以让我得到我需要的东西?
如何从图片中获取所需信息,以便它适用于所有格式?
由于
答案 0 :(得分:5)
我认为您只需要查看EXIF信息。 http://en.wikipedia.org/wiki/Exif
有一些开源工具可以实现这一点,但我不知道Delphi的具体内容。如果您不害怕Java,可以查看此开源项目的源代码:http://sourceforge.net/projects/jexifviewer/,了解它们如何评估日期字段。
然后,您可以优化您的阅读器,只查看相关区域。您可能需要记住,Java中的Endianness与Delphi不同。
答案 1 :(得分:5)
Jules对Exif数据是正确的;你可能想试试这个Delphi库:
答案 2 :(得分:0)
这是一个查看Exif数据的绝佳网站。