Delphi 取JPG图片内的Exif信息

// 取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

你可能感兴趣的:(delphi,string)