我已经安装了here软件包CCR.EXIF。但是我有一些问题。
我找到了用于读取有关图像的GPS信息的代码,并尝试使用该代码,但是在CheckTrue
上出现错误,现在我不确定这是否是另一种编程语言或是否进行了安装错误。
procedure TstExifLE.ReadGPSTest;
var
imgInfo: TImgInfo;
lTag: TTag;
begin
imgInfo := TImgInfo.Create;
try
imgInfo.LoadFromFile(WorkFile_JpegWithExif);
lTag := imgInfo.ExifData.TagByName['GPSVersionID'];
CheckTrue(lTag <> nil, 'Tag "GPSVersionID" not found');
CheckTrue(lTag is TVersionTag, 'Tag "GPSVersionID" is not TVersionTag');
TVersionTag(lTag).Separator := '.';
CheckEquals('2.3.0.0', lTag.AsString, 'Value mismatch of tag "GPSVersionID"');
lTag := imgInfo.ExifData.TagByName['GPSLatitude'];
CheckTrue(lTag <> nil, 'Tag "GPSLatitude" not found');
CheckTrue(lTag is TGPSPositionTag, 'Tag "GPSLatitude" is not a TGpsPositionTag');
TGpsPositionTag(lTag).FormatStr := '%0:.0f deg %1:.0f'' %2:.2f"';
CheckEquals('51 deg 33'' 48.28"', lTag.AsString, 'Value mismatch of tag "GPSLatitude"');
lTag := imgInfo.ExifData.TagByName['GPSLatitudeRef'];
CheckTrue(lTag <> nil, 'Tag "GPSLatitudeRef" not found');
CheckEquals('South', lTag.AsString, 'Value mismatch of tag "GPSLatitudeRef"');
lTag := imgInfo.ExifData.TagByName['GPSLongitude'];
CheckTrue(lTag <> nil, 'Tag "GPSLongitude" not found');
CheckTrue(lTag is TGPSPositionTag, 'Tag "GPSLongitude" is not a TGpsPositionTag');
TGpsPositionTag(lTag).FormatStr := '%0:.0f deg %1:.0f'' %2:.2f"';
CheckEquals('59 deg 49'' 53.55"', lTag.AsString, 'Value mismatch of tag "GPSLongitude"');
lTag := imgInfo.ExifData.TagByName['GPSLongitudeRef'];
CheckTrue(lTag <> nil, 'Tag "GPSLongitudeRef" not found');
CheckEquals('West', lTag.AsString, 'Value mismatch of tag "GPSLongitudeRef"');
finally
imgInfo.Free;
end;
end;
错误消息:
-找不到标识符“ TstExifLE”
-找不到标识符“ CheckTrue”
-找不到标识符'CheckEquals'
修改 我制作了类TstExifLe,这是我得到的以下错误
找不到标识符“ TTestCase”
答案 0 :(得分:2)
找到的代码是DUnit测试的一部分。所有DUnit测试都来自TTestCase,并使用CheckTrue,CheckEquals等方法作为测试已通过的断言。您将需要重构代码以消除对DUnit进行编译的需要,或者如果您只是想在运行中看到它,则可以下载并安装DUnit。
答案 1 :(得分:2)
为了完整起见,这就是我提取GPS信息的方式:
procedure TForm1.ReadGPS; var imgInfo: TImgInfo; lTag: TTag; begin imgInfo := TImgInfo.Create; try imgInfo.LoadFromFile(WorkFile_JpegWithExif); lTag := imgInfo.ExifData.TagByName['GPSVersionID']; Memo1.Lines.Add('GPSVersionID: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLatitude']; TGpsPositionTag(lTag).FormatStr := '%0:.0f deg %1:.0f'' %2:.2f"'; Memo1.Lines.Add('GPSLatitude: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLatitudeRef']; Memo1.Lines.Add('GPSLatitudeRef: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLongitude']; TGpsPositionTag(lTag).FormatStr := '%0:.0f deg %1:.0f'' %2:.2f"'; Memo1.Lines.Add('GPSLongitude: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLongitudeRef']; Memo1.Lines.Add('GPSLongitudeRef: ' + lTag.AsString); finally imgInfo.Free; end; end;