TNB Library
クラス | 公開型 | 公開メンバ関数 | 全メンバ一覧
CExifFile クラス

EXIF規格ファイル管理クラス [詳解]

#include <TnbExifFile.h>

+ CExifFile の継承関係図

クラス

class  CTagInfo
 タグ情報. [詳解]
 
struct  TRational
 符号無し有理数 [詳解]
 
struct  TSRational
 符号付き有理数 [詳解]
 

公開型

typedef CMapT< PROPID, CTagInfoCMapTagInfos
 タグ情報のマップ [詳解]
 
enum  EType {
  ET_Byte = PropertyTagTypeByte , ET_Ascii = PropertyTagTypeASCII , ET_Short = PropertyTagTypeShort , ET_Long = PropertyTagTypeLong ,
  ET_Rational = PropertyTagTypeRational , ET_Undefined = PropertyTagTypeUndefined , ET_SLong = PropertyTagTypeSLONG , ET_SRational = PropertyTagTypeSRational
}
 データ型 [詳解]
 

公開メンバ関数

bool Attach (LPCWSTR lpszFileName)
 [読込] ファイル読込み(Attach). [詳解]
 
 CExifFile (void)
 コンストラクタ [詳解]
 
void Empty (void)
 [設定] エンプティ化 [詳解]
 
CBitmapHandle GetBitmap (void) const
 [取得] Bitmap取得. [詳解]
 
void GetCopyrightTag (CStr &_s1, CStr &_s2) const
 [取得] Copyrightタグ取得. [詳解]
 
const CTagInfoGetTagInfo (PROPID id) const
 [取得] EXIFタグ情報取得 [詳解]
 
const CMapTagInfosGetTagInfoMap (void) const
 [参照] EXIFタグ情報一覧参照. [詳解]
 
CStr GetUserCommentTag (void) const
 [取得] UserCommentタグ取得. [詳解]
 
bool Load (HBITMAP hBmp, HPALETTE hPal=NULL)
 [読込] HBITMAP読込み. [詳解]
 
bool Load (LPCWSTR lpszFileName)
 [読込] ファイル読込み. [詳解]
 
const Gdiplus::Bitmap * ReferBitmap (void) const
 [取得] Bitmap取得. [詳解]
 
void RemoveTagInfo (PROPID id)
 [設定] EXIFタグ情報削除. [詳解]
 
bool Save (LPCWSTR lpsz, CGdiPlus::EBitmapFormat fmt=CGdiPlus::JPG, LONG jpegQuality=80)
 [作成] 画像ファイル作成. [詳解]
 
bool SaveJpeg (LPCWSTR lpsz, LONG jpegQuality=80)
 [作成] Jpegファイル作成. [詳解]
 
void SetCopyrightTag (LPCSTR lpsz1, LPCSTR lpsz2=NULL)
 [取得] Copyrightタグ取得. [詳解]
 
void SetGpsAltitudeTag (DWORD d1, DWORD d2=1)
 [設定] 高度設定 [詳解]
 
void SetGpsLatitudeTag (bool isNorth, DWORD dd, DWORD mm, double ss)
 [設定] 緯度設定 [詳解]
 
void SetGpsLongitudeTag (bool isEast, DWORD dd, DWORD mm, double ss)
 [設定] 経度設定 [詳解]
 
void SetGpsVersionTag (void)
 [設定] GPSバージョン情報設定 [詳解]
 
void SetTagInfo (PROPID id, const CTagInfo &ti)
 [設定] EXIFタグ情報設定. [詳解]
 
void SetTagInfo (PROPID id, const SYSTEMTIME &st)
 [設定] EXIFタグ情報設定(時間ASCII文字列). [詳解]
 
void SetTagInfo (PROPID id, LPCSTR lpsz, size_t len=INVALID_SIZE)
 [設定] EXIFタグ情報設定(ASCII文字列). [詳解]
 
void SetUserCommentTag (LPCSTR lpsz)
 [設定] UserCommentタグ設定(ASCII/JIS). [詳解]
 
void SetUserCommentTag (LPCWSTR lpsz)
 [設定] UserCommentタグ設定(UNICODE). [詳解]
 
void SetVersionTag (DWORD ver=0x0210)
 [設定] バージョンタグ設定. [詳解]
 
 ~CExifFile (void)
 デストラクタ [詳解]
 

詳解

EXIF規格ファイル管理クラス

一組の画像情報とEXIFタグ情報を管理し、ファイル入出力を行うことができます。
注意
非 UNICODEプロジェクトでも、本クラスの文字列は UNICODE で指定する必要があります。 CUnicode 等、使用してください。
todo:
Windows7 においてユーザーコメントが正しくアクセスできない現象発生中。
使用例
ef.Attach(L"c:\\A.bmp"); // 対象ファイルアタッチ
//時間
::GetLocalTime(&st);
ef.SetTagInfo(PropertyTagExifDTOrig, st);// 日付設定
ef.Save(L"c:\\B.jpg"); // 保存
CExifFile(void)
コンストラクタ
Definition: TnbExifFile.h:496
システムタイム型.
Definition: TnbTime.h:876
必要ファイル
TnbExifFile.h
日付
09/01/21 新規作成。
09/02/02 Save処理改善。
15/01/07 ユーザーコメントが正しくアクセス出来ない現象発生。未対応。

TnbExifFile.h53 行目に定義があります。

型定義メンバ詳解

◆ CMapTagInfos

typedef CMapT<PROPID, CTagInfo> CMapTagInfos

タグ情報のマップ

TnbExifFile.h489 行目に定義があります。

列挙型メンバ詳解

◆ EType

enum EType

データ型

列挙値
ET_Byte 

8ビット符号無し整数。

ET_Ascii 

ASCII文字列。

ET_Short 

16ビット符号無し整数。

ET_Long 

32ビット符号無し整数。

ET_Rational 

32ビット符号無し有理数(整数 2個。分子、分母)。

ET_Undefined 

任意の 8bitデータ。

ET_SLong 

32ビット符号付き整数。

ET_SRational 

32ビット符号付き有理数(整数 2個。分子、分母)。

TnbExifFile.h70 行目に定義があります。

構築子と解体子

◆ CExifFile()

CExifFile ( void  )

コンストラクタ

TnbExifFile.h496 行目に定義があります。

◆ ~CExifFile()

~CExifFile ( void  )

デストラクタ

TnbExifFile.h501 行目に定義があります。

関数詳解

◆ Attach()

bool Attach ( LPCWSTR  lpszFileName)

[読込] ファイル読込み(Attach).

指定のファイルを読み込み、 EXIF タグ情報も読み込み、本インスタンスに記憶します。 指定のファイルはアタッチ中は、ロックされます。

引数
lpszFileName画像ファイル名。
戻り値
true読込み成功.
false失敗.

TnbExifFile.h528 行目に定義があります。

◆ Empty()

void Empty ( void  )

[設定] エンプティ化

覚え書き
保持してる情報を開放します。

TnbExifFile.h510 行目に定義があります。

◆ GetBitmap()

CBitmapHandle GetBitmap ( void  ) const

[取得] Bitmap取得.

覚え書き
保持している画像を返します。
戻り値
画像

TnbExifFile.h667 行目に定義があります。

◆ GetCopyrightTag()

void GetCopyrightTag ( CStr _s1,
CStr _s2 
) const

[取得] Copyrightタグ取得.

覚え書き
PropertyTagCopyright タグから情報を取得します。
引数
[out]_s1撮影著作権者
[out]_s2編集著作権者

TnbExifFile.h750 行目に定義があります。

◆ GetTagInfo()

const CTagInfo * GetTagInfo ( PROPID  id) const

[取得] EXIFタグ情報取得

引数
idID
戻り値
NULL指定のIDの情報なし
NULL以外情報

TnbExifFile.h704 行目に定義があります。

◆ GetTagInfoMap()

const CMapTagInfos & GetTagInfoMap ( void  ) const

[参照] EXIFタグ情報一覧参照.

戻り値
全EXIFタグ情報

TnbExifFile.h687 行目に定義があります。

◆ GetUserCommentTag()

CStr GetUserCommentTag ( void  ) const

[取得] UserCommentタグ取得.

覚え書き
PropertyTagExifUserComment タグから情報を取得します。
戻り値
ユーザコメント

TnbExifFile.h714 行目に定義があります。

◆ Load() [1/2]

bool Load ( HBITMAP  hBmp,
HPALETTE  hPal = NULL 
)

[読込] HBITMAP読込み.

指定のHBITMAPを本インスタンスに記憶します。

引数
hBmp画像。
hPalパレット。省略可能。
戻り値
true読込み成功.
false失敗.

TnbExifFile.h593 行目に定義があります。

◆ Load() [2/2]

bool Load ( LPCWSTR  lpszFileName)

[読込] ファイル読込み.

指定のファイルを読み込み、 EXIF タグ情報も読み込み、本インスタンスに記憶します。

覚え書き
この関数は画像情報を複製します。上書きを目的としていない場合、 Attach() のほうが高速です。
引数
lpszFileName画像ファイル名。
戻り値
true読込み成功.
false失敗.

TnbExifFile.h564 行目に定義があります。

◆ ReferBitmap()

const Gdiplus::Bitmap * ReferBitmap ( void  ) const

[取得] Bitmap取得.

覚え書き
保持している画像を返します。
戻り値
NULL保持していない
戻り値
NULL以外 画像。 delete しないでください。

TnbExifFile.h657 行目に定義があります。

◆ RemoveTagInfo()

void RemoveTagInfo ( PROPID  id)

[設定] EXIFタグ情報削除.

引数
idID

TnbExifFile.h771 行目に定義があります。

◆ Save()

bool Save ( LPCWSTR  lpsz,
CGdiPlus::EBitmapFormat  fmt = CGdiPlus::JPG,
LONG  jpegQuality = 80 
)

[作成] 画像ファイル作成.

本インスタンスで管理している画像と EXIFタグ情報を BMP, JPEG などのファイルに書き出します。

覚え書き
JPEG 以外の場合 EXIFタグ情報が書き出されない可能性もあります(規格)。
Attach() している場合、上書きできません。
引数
lpszファイル名。
fmtフォーマット。省略するとBMPです。
jpegQualityJPEGのクオリティ(0〜100)。省略すると80。
戻り値
true成功。
false失敗。

TnbExifFile.h631 行目に定義があります。

◆ SaveJpeg()

bool SaveJpeg ( LPCWSTR  lpsz,
LONG  jpegQuality = 80 
)

[作成] Jpegファイル作成.

本インスタンスで管理している画像と EXIFタグ情報を jpegファイルに書き出します。

覚え書き
Attach() している場合、上書きできません。
引数
lpszファイル名。
jpegQualityJPEGのクオリティ(0〜100)。省略すると80。
戻り値
true成功。
false失敗。

TnbExifFile.h615 行目に定義があります。

◆ SetCopyrightTag()

void SetCopyrightTag ( LPCSTR  lpsz1,
LPCSTR  lpsz2 = NULL 
)

[取得] Copyrightタグ取得.

覚え書き
PropertyTagCopyright タグに情報を設定します。
引数
lpsz1撮影著作権者。
lpsz2編集著作権者。

TnbExifFile.h880 行目に定義があります。

◆ SetGpsAltitudeTag()

void SetGpsAltitudeTag ( DWORD  d1,
DWORD  d2 = 1 
)

[設定] 高度設定

覚え書き
PropertyTagGpsVer / PropertyTagGpsAltitudeRef / PropertyTagGpsAltitude タグに情報を設定します。
引数
d1値1。
d2値2。省略すると1。

TnbExifFile.h955 行目に定義があります。

◆ SetGpsLatitudeTag()

void SetGpsLatitudeTag ( bool  isNorth,
DWORD  dd,
DWORD  mm,
double  ss 
)

[設定] 緯度設定

覚え書き
PropertyTagGpsVer / PropertyTagGpsLatitudeRef / PropertyTagGpsLatitude タグに情報を設定します。
引数
isNorthtrue なら北緯、 false なら南緯
ddD.
mmM.
ssS.

TnbExifFile.h921 行目に定義があります。

◆ SetGpsLongitudeTag()

void SetGpsLongitudeTag ( bool  isEast,
DWORD  dd,
DWORD  mm,
double  ss 
)

[設定] 経度設定

覚え書き
PropertyTagGpsVer / PropertyTagGpsLongitudeRef / PropertyTagGpsLongitude タグに情報を設定します。
引数
isEasttrue なら西経、 false なら東経
ddD.
mmM.
ssS.

TnbExifFile.h939 行目に定義があります。

◆ SetGpsVersionTag()

void SetGpsVersionTag ( void  )

[設定] GPSバージョン情報設定

覚え書き
PropertyTagGpsVer タグに情報を設定します。

TnbExifFile.h905 行目に定義があります。

◆ SetTagInfo() [1/3]

void SetTagInfo ( PROPID  id,
const CTagInfo ti 
)

[設定] EXIFタグ情報設定.

任意のIDに任意の情報を設定できます。

引数
idID
ti情報

TnbExifFile.h782 行目に定義があります。

◆ SetTagInfo() [2/3]

void SetTagInfo ( PROPID  id,
const SYSTEMTIME st 
)

[設定] EXIFタグ情報設定(時間ASCII文字列).

覚え書き
指定の時間を ASCI 20文字で格納します。
引数
idID。撮影時間の場合、 PropertyTagExifDTOrig を指定します。
st時間

TnbExifFile.h805 行目に定義があります。

◆ SetTagInfo() [3/3]

void SetTagInfo ( PROPID  id,
LPCSTR  lpsz,
size_t  len = INVALID_SIZE 
)

[設定] EXIFタグ情報設定(ASCII文字列).

任意のIDに文字列の情報を設定できます。

引数
idID
lpsz文字列
lenNULLを含む文字列長。省略可能。指定する場合、lpsz がそのサイズアクセス可能であるようにすること。

TnbExifFile.h794 行目に定義があります。

◆ SetUserCommentTag() [1/2]

void SetUserCommentTag ( LPCSTR  lpsz)

[設定] UserCommentタグ設定(ASCII/JIS).

ユーザコメント情報に指定の文字列を設定できます。

覚え書き
PropertyTagExifUserComment タグに情報を設定します。
引数
lpszコメント

TnbExifFile.h836 行目に定義があります。

◆ SetUserCommentTag() [2/2]

void SetUserCommentTag ( LPCWSTR  lpsz)

[設定] UserCommentタグ設定(UNICODE).

ユーザコメント情報に指定の文字列を設定できます。

覚え書き
PropertyTagExifUserComment タグに情報を設定します。
引数
lpszコメント

TnbExifFile.h862 行目に定義があります。

◆ SetVersionTag()

void SetVersionTag ( DWORD  ver = 0x0210)

[設定] バージョンタグ設定.

バージョン情報に指定のバージョンを設定できます。

覚え書き
PropertyTagExifVer タグに情報を設定します。
引数
verバージョン。省略すると 0x0210 が割り当てられます。

TnbExifFile.h820 行目に定義があります。