ピクチャメタデータをブロック単位で抽出する
日付 | 2011/11/01 |
---|---|
ID | 76389 (英語原文参照) |
バージョン | v12 |
プラットフォーム | Mac/Win |
4D v12以降,GET PICTURE METADATAコマンドで,ピクチャフィールドまたはピクチャ変数からメタデータが取り出せるようになりました。このコマンドは,一回の呼び出しでTIFF,EXIF,GPS,IPTCなどのメタデータをプロック単位で取り出すこともできます。
以下は,このコマンドの特性を活かし,次のようなコードですべてのメタデータをXML形式に統合するメソッドです。
C_STRING(16;$xml_root;$xml_TIFF;$xml_GPS;$xml_EXIF;$xml_IPTC) C_PICTURE($1;$image_i) $image_i:=$1 $xml_root:=DOM Create XML Ref("e;Root"e;) // Creation of an XML DOM tree $xml_TIFF:=DOM Create XML element($xml_root;"e;/Root/TIFF"e;) GET PICTURE METADATA($image_i;"e;TIFF"e;;$xml_TIFF) $xml_GPS:=DOM Create XML element($xml_root;"e;/Root/GPS"e;) GET PICTURE METADATA($image_i;"e;GPS"e;;$xml_GPS) $xml_EXIF:=DOM Create XML element($xml_root;"e;/Root/EXIF"e;) GET PICTURE METADATA($image_i;"e;EXIF"e;;$xml_EXIF) $xml_IPTC:=DOM Create XML element($xml_root;"e;/Root/IPTC"e;) GET PICTURE METADATA($image_i;"e;IPTC"e;;$xml_IPTC) DOM EXPORT TO FILE($xml;Get 4D folder(Database Folder)+"e;image_meta.xml"e;) DOM CLOSE XML($xml)
たとえば,下記のようなXMLが出来上がります。
<?xml version="e;1.0"e; encoding="e;UTF-8"e; standalone="e;no"e; ?> <Root> <TIFF DateTime="e;2004-03-10T09:37:27Z"e; Make="e;Canon"e; Model="e;Canon DIGITAL IXUS 400"e; Orientation="e;1"e; ResolutionUnit="e;2"e; Software="e;Adobe Photoshop 7.0"e; XResolution="e;180"e; YResolution="e;180"e;/> <GPS/> <EXIF ApertureValue="e;5.65625"e; ColorSpace="e;1"e; ComponentsConfiguration="e;1;2;3;0"e; CompressedBitsPerPixel="e;5"e; CustomRendered="e;0"e; DateTimeDigitized="e;2004-03-09T17:47:30Z"e; DateTimeOriginal="e;2004-03-09T17:47:30Z"e; DigitalZoomRatio="e;1"e; ExifVersion="e;0220"e; ExposureBiasValue="e;0"e; ExposureMode="e;0"e; ExposureTime="e;0.0025"e; FNumber="e;7.1"e; FileSource="e;3"e; Flash="e;24"e; FlashPixVersion="e;0100"e; FocalLength="e;7.40625"e; FocalPlaneResolutionUnit="e;2"e; FocalPlaneXResolution="e;8114.2857142857"e; FocalPlaneYResolution="e;8114.2857142857"e; MaxApertureValue="e;2.96875"e; MeteringMode="e;5"e; PixelXDimension="e;2272"e; PixelYDimension="e;1704"e; SceneCaptureType="e;0"e; SensingMethod="e;2"e; ShutterSpeedValue="e;8.65625"e; WhiteBalance="e;0"e;/> <IPTC/> </Root>