// 取Exif信息
function GetExifItem(GPImage:TGPImage;ItemID: PROPID): String;
var
PropSize: UINT;
PropItem: PPropertyItem;
S:PChar;
S1,S2:String;
begin
PropSize : = GPImage.GetPropertyItemSize(ItemID);
if PropSize = 0 then begin
Result: = '' ;
Exit;
end;
GetMem(PropItem ,PropSize);
GPImage.GetPropertyItem(ItemID, PropSize, PropItem);
// 字符
if PropItem.type_ = PropertyTagTypeASCII then begin
Result: = PChar(PropItem.Value);
end;
// 分数
if (PropItem.type_ = PropertyTagTypeRational)
or (PropItem.type_ = PropertyTagTypeSRational) then begin
S: = PChar(PropItem.Value);
S1: = IntToHex(Ord(S[ 3 ]), 2 ) + IntToHex(Ord(S[ 2 ]), 2 ) +
IntToHex(Ord(S[ 1 ]), 2 ) + IntToHex(Ord(S[ 0 ]), 2 );
S2: = IntToHex(Ord(S[ 7 ]), 2 ) + IntToHex(Ord(S[ 6 ]), 2 ) +
IntToHex(Ord(S[ 5 ]), 2 ) + IntToHex(Ord(S[ 4 ]), 2 );
Result: = IntToStr(StrToInt( ' $ ' + S1)) + ' / ' + IntToStr(StrToInt( ' $ ' + S2));
end;
// 数字
if PropItem.type_ = PropertyTagTypeShort then begin
S: = PChar(PropItem.Value);
S1: = IntToHex(Ord(S[ 1 ]), 2 ) + IntToHex(Ord(S[ 0 ]), 2 );
Result: = IntToStr(StrToInt( ' $ ' + S1));
end;
// 字节
{if PropItem.type_= PropertyTagTypeByte then begin
S:=PChar(PropItem.Value);
S1:=IntToHex(Ord(S[1]),2)+IntToHex(Ord(S[0]),2);
Result:=IntToStr(StrToInt('$'+S1));
end;}
FreeMem(PropItem);
end;
下载: http://download1.csdn.net/down3/20070516/16143519219.zip