如何拍摄照片的日期和时间?

use*_*105 1 delphi exif image

我正在Delphi中编写一个程序,该程序应该获取使用photo cam拍摄的图片的日期和时间,然后重命名该文件以包括它找到的日期+时间.

到目前为止,我已经通过打开文件作为二进制文件并搜索特殊的字节顺序来实现这一点.然后这些字节后跟日期和时间.所以我遇到了一个问题.其实很少有问题.

  1. 因为它一个接一个地读取文件,所以读取文件是一个缓慢的过程.如果找到日期,它通常在文件的开头,它不需要很长时间,但是如果没有找到"特殊字节顺序",它将读取整个文件.所以我的方法太慢了.

  2. 即使是使用相同的相机拍摄,特殊字节顺序也可能会在某些图片中发生变化(我不知道为什么).所以我的程序有时无法在文件中找到日期,即使它在那里.

Windows资源管理器在所有图片中找到日期没有问题,所以我想也许有某种特殊功能可以让我得到我需要的东西?

如何从图片中获取所需信息,以便它适用于所有格式?

谢谢

Jul*_*les 5

我想你只需要查看EXIF信息.http://en.wikipedia.org/wiki/Exif

有一些开源工具可以实现这一点,但我不知道任何特定于Delphi的东西.如果您不害怕Java,可以查看这个开源项目的源代码:http://sourceforge.net/projects/jexifviewer/,了解它们如何评估日期字段.
然后,您可以优化您的阅读器,只查看相关区域.您可能需要记住,Java中的Endianness与Delphi不同.


Stu*_*art 5

Jules对Exif数据是正确的; 你可能想试试这个Delphi库:

http://delphihaven.wordpress.com/ccr-exif/