在lazarus中安装CCR.EXIF软件包

时间:2018-07-17 13:38:40

标签: delphi gps lazarus

我已经安装了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”

2 个答案:

答案 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;