来自 CCRExif 1.5.1 内文档 -
GPS
Exif 标准允许设置 GPS(即定位)数据,该数据存储在其自己的部分/子IFD中。使用 TExifData,您既可以读取也可以写入这些数据,标准的一组 GPS 标签会作为该类的属性暴露出来。需要注意的重要事项是,GPS 坐标可以用两种不同的方式表示,分别是单个小数值或以度、分和秒表示。Exif 使用后一种形式,因此,如果您希望将 GPS 坐标分配给图像,并且您拥有所需的以小数形式表示的值,则需要首先转换为另一种形式。(对于“单次”转换,您可以使用以下网站: http://www.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html。)但是,一旦您获得了所需格式的坐标,将它们分配给图像的过程如下:
with TExifData.Create do
try
LoadFromGraphic(ImageFile);
GPSLatitude.Assign(51, 25, 32.1, ltNorth);
GPSLongitude.Assign(0, 12, 29.2, lnEast);
SaveToGraphic(ImageFile);
finally
Free;
end;
查看源代码可以了解:
TGPSLatitude = class(TGPSCoordinate)
“TGPSCoordinate”类的声明在公共部分中。
property Degrees: TExifFraction index 0 read GetValue
property Minutes: TExifFraction index 1 read GetValue
property Seconds: TExifFraction index 2 read GetValue
property Direction: AnsiChar read GetDirectionChar write SetDirectionChar
此外,压缩文件中还有几个演示应用程序。
注:在阅读评论后,我再次查看了演示,在ExifList演示中,您可以在ExifListFrame.pas中找到以下代码:
procedure AddValue(const Name: string; Coord: TGPSCoordinate); overload;
var
DirectionStr: string;
{$IFDEF BUGGYCOMPILER}
Degrees, Minutes, Seconds: TExifFraction;
{$ENDIF}
begin
if Coord.MissingOrInvalid then Exit;
case Coord.Direction of
'N': DirectionStr := 'north';
'S': DirectionStr := 'south';
'W': DirectionStr := 'west';
'E': DirectionStr := 'east';
else DirectionStr := '';
end;
{$IFDEF BUGGYCOMPILER}
Degrees := Coord.Degrees;
Minutes := Coord.Minutes;
Seconds := Coord.Seconds;
AddValue(Name, '%g°, %g minutes and %g seconds %s', [Degrees.Quotient,
Minutes.Quotient, Seconds.Quotient, DirectionStr]);
{$ELSE}
AddValue(Name, '%g°, %g minutes and %g seconds %s', [Coord.Degrees.Quotient,
Coord.Minutes.Quotient, Coord.Seconds.Quotient, DirectionStr]);
{$ENDIF}
end;
TdmSH
是什么,以及它的DMStoDec
方法是什么功能? - Tom Brunberg