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;
阅读更多
文章标签: delphi
个人分类: Delphi
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Delphi 取JPG图片内的Exif信息

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭