1

我正在寻找可以将 EXIF 数据写入 JPG 图像的 Delphi7 组件。

我经常制作全景图,加入一些我用相机拍摄的照片。PTGui 是我用来制作此类全景图的程序。问题是原始图片中的 EXIF 数据不会保留在最终图像中。

我想使用 Delphi7 编写一个代码,它从集合的第一张图像中读取 EXIF 数据并将该数据写入最终的全景图像。

我可以找到 CCR EXIF,但它来自 Delphi 2006,而不是 D7 ......

任何人都可以提出一些想法,提示,线索?


编辑:我很抱歉提出一个被认为离题的问题。当然这不是我的本意。

回答并感谢 Warren P,是的,我用 Delphi7 尝试了 CCR。

尝试其任何示例代码,返回此错误: Constant expression expected.

在这一行: {$IF CompilerVersion < 23} //no FMX before XE2

CCR.Exif.inc文件中

样本分为三种:

  • 文件名末尾有 2009
  • XE 在文件名的末尾
  • 只是文件名

这个小代码返回一个丢失的 DCU 文件:

uses 
  CCR.Exif;

procedure ReadCameraMakeAndModel(const FileName: string;
  out Make, Model: string);
var
  ExifData: TExifData;
begin
  ExifData := TExifData.Create;
  try
    ExifData.LoadFromGraphic(FileName);
    Make := ExifData.CameraMake;
    Model := ExifData.CameraModel;
  finally
    ExifData.Free;
  end; 
end;

File not found: CCR.Exif.dcu

DCU 文件夹中没有 DCU 文件。

由于上述错误,我得出结论认为 CCR Exif 不适用于 Delphi 7,但我可能错了。


编辑2 更新一些信息:

我安装了Delphi 2007,应该可以编译CCR Exif。但是当我尝试编译一些 CCR Exif 附带的 Samples 项目时,我遇到了一个奇怪的行为。我可以编译以下示例: IPTCEditor XMPBrowser

但我无法编译以下内容: ExifList JpegDump ResaveTest Screenshot TimeShift

所有这些错误都是相同的:

在这个块:

if Value <> LastSetDateTimeValue then
  begin
    LastSetDateTimeValue := Value;
    LastSetDateTimeMainStr := DateTimeToExifString(Value);
    LastSetDateTimeSubSecStr := GetExifSubSecsString(Value);
  end;

错误:

[DCC Error] CCR.Exif.pas(2475): E2010 Incompatible types: 'TDateTime' and 'TDateTimeTagValue'
[DCC Error] CCR.Exif.pas(4410): E2010 Incompatible types: 'TDateTime' and 'TDateTimeTagValue'
[DCC Error] CCR.Exif.pas(4411): E2010 Incompatible types: 'TDateTime' and 'TDateTimeTagValue'
[DCC Error] ExifList.dpr(17): F2063 Could not compile used unit '..\..\CCR.Exif.pas'

奇怪的是,我有一个朋友拥有Delphi XE ,但他可以毫无错误地编译示例... :-(

搜索 CCR.Exif.BaseUtils.pas 我发现DateTimeTagValue作为记录。但是为什么我的朋友可以编译相同的包???而我不能?

在这里,我的办公桌布局的屏幕截图:

在此处输入图像描述 有人有线索吗?

4

0 回答 0