rexif APIリファレンス

クラス構造

Jpegクラス

Jpeg<Class
Jpeg::ParseError<StanderdError
Jpeg::Segment<Class
Jpeg::StringIO<String
Jpeg::SOFData<Jpeg::Segment

Exifクラス

Exif<Jpeg::Segment
Exif::ParseError<Jpeg::ParseError
Exif::Rational<Rational
Exif::Data<Class
Exif::Ifd<Array
Exif::Ifd::Directory<Class
Exif::Ifd::Directory::TagInfo<Class

Jpeg

JPEGファイルの構造を解析するためのクラス

パース時およびセグメントの要素の変更時に各セグメントに対応する特異メソッドが動的に生成される。 (例:APP1セグメントが存在する場合,app1が生成される)

スーパークラス

Class

ミックスイン

Enumerable

例外

Jpeg::ParseError

JPEGファイルのパースエラー

スーパークラス

StanderdError

クラス変数

segment_class

各セグメントを解析するためのクラスを格納するためのハッシュテーブル

クラスメソッド

Jpeg.new(data=nil,parse_header_only=PARSE_FULL_IMAGE)

Jpeg.new(data=nil,parse_header_only=PARSE_FULL_IMAGE){|segment| ... }

dataを省略した場合,空のオブジェクトが作成される。

dataにIOオブジェクトを指定した場合にはファイルの読み込みを行い解析を開始する。文字列を指定した場合には,与えられた文字列を読み込み済みのファイルイメージとして扱う。

parse_header_onlyにPARSE_HEADER_ONLYを指定した場合には,SOSセグメント以降の解析を行わない。PARSE_FULL_IMAGEの場合には全ファイルの解析を行う。

ブロックが与えられた場合には,各セグメントの解析が終了した段階で,各セグメントを格納したJpeg::Segmentオブジェクトがブロックに渡され,ブロックの実行結果がセグメントの値として保存される。

Jpeg.load(file,parse_header_only=false)

Jpeg.load(file,parse_header_only=false){|segment| ... }

Jpeg.open(file,parse_header_only=false)

Jpeg.open(file,parse_header_only=false){|segment| ... }

fileにファイル名を指定する他はJpeg.newと同じ。

Jpeg.use_class_for(segment,data_class)

各セグメントを解析するクラスを登録する。

segmentにはJpeg::Segmentクラスの各セグメントを表す定数を指定し,data_classには各セグメント解析用のクラス名を指定する。data_classに登録するクラスはJpeg::Segmentクラスを継承したもので無ければならない。

クラスを登録されたセグメント以外の解析にはJpeg::Segmentクラスが用いられる。

インスタンスメソッド

Enumerableモジュールで提供されるメソッドのうち,以下のメソッドは未定義にされている。

parse(f,header_only=PARSE_FULL_IMAGE)

parse(f,header_only=PARSE_FULL_IMAGE){|segment| ... }

JPEGファイルの解析を開始する。引数はJpeg.newと同じ。

ブロックが与えられた場合には,各セグメントの解析が終了した段階で,各セグメントを格納したJpeg::Segmentオブジェクトがブロックに渡され,ブロックの実行結果がセグメントの値として保存される。

解析に失敗した場合Jpeg::ParseErrorが発生する。

imagestream

JPEGイメージデータ部。PARSE_HEADER_ONLYでJpegオブジェクトを生成した場合にはnil。

garbage

EOIセグメント以降に存在しているデータ。EOI以降にデータが存在しない場合はnil。

dump

オブジェクトが保持するJPEGイメージをバイト列として出力する。

each{|seg| ... }

すべてのセグメントに対しブロックを実行する。

to_a

entries

segments

すべてのセグメントの配列を返す

index(segment)

引数が文字列の場合にはセグメントのマーカと,その他の場合には引数そのものと一致するセグメントのインデックスを返す。 なければnil。

例)

has_segment?(segment)

include?(segment)

member?(segment)

引数にマッチするセグメントが存在する場合trueを返す。引数はindexと同じ。

[segment]

引数に正規表現を指定した場合,正規表現にマッチするマーカ名をもつセグメントの配列を返す。文字列を指定した場合は,それと一致するマーカまたはマーカ名をもつセグメントを返す。数値を指定した場合は引数の位置にあるセグメントを返す。

例)

引数に一致するセグメントが無い場合,引数が正規表現のときには[],それ以外ではnilを返す。

[m..n]

[n,len]

セグメントの部分配列を返す。引数に文字列の範囲を指定した場合には,範囲の最初(range.first)に一致するセグメントから範囲の最後(range.last)に一致するセグメントまでの配列を返す。

例)

[segment]=data

[m..n]=data

[n,len]=data

セグメントの配列要素を変更する。配列要素指定には文字列,文字列の範囲,数値,数値の範囲を指定可能。 dataにJpeg::Segmentオブジェクト以外を指定した場合には,IMGマーカを持つJpeg::Segmentオブジェクトに変換して格納される。

insert_at(pos,data)

posの位置にdataを挿入する。posには数値または文字列を指定可能。 dataにJpeg::Segmentオブジェクト以外を指定した場合には,IMGマーカを持つJpeg::Segmentオブジェクトに変換して格納される。

[pos,0]=dataと等価

insert_after_soi(data)

SOIセグメントの後ろにdataを挿入する。

insert_befor_sos(data)

insert(data)

SOSセグメントの前にdataを挿入する。

insert_after_eoi(data)

garbage=(data)

EOIセグメントの後ろにdataを挿入する。

delete(segment)

delete(segment){|seg| ... }

引数と一致するすべてのセグメントを削除する。引数には正規表現,文字列,Jpeg::Segmentオブジェクトを指定可能。正規表現,文字列を指定した場合には引数に一致するマーカ名またはマーカを持つセグメントが削除される。

ブロックを与ええられていれば,削除する要素が無かった場合に実行される。

delete_at(pos)

pos番目の位置にあるセグメントを削除する。

delete_if{|seg| ... }

ブロックの実行結果がtrueであるセグメントを削除する。

compact

nilおよびデータ長が0のIMGマーカを持つJpeg::Segmentオブジェクトを削除する。

delete_garbage

trim_garbage

EOIセグメント以降に存在しているデータを削除する。

use_class_for(segment,data_class,force_replace=false)

生成済みJpegオブジェクトに対して各セグメント解析用のクラスを指定する。 force_replaceをtrueにした場合は,指定したセグメントが解析であっても,指定されたクラスで再解析し,結果を置き換える。

特異メソッド

soi, app1 などJPEGセグメントマーカ名

セグメントにアクセスするためのメソッド。Jpeg::Segmentが返る。

定数

PARSE_HEADER_ONLY

PARSE_FULL_IMAGE

Jpeg::Segment

セグメント解析にデフォルトで用いられるクラス。 Jpegオブジェクト内で解析に用いる独自のセグメント解析クラスを作成する場合にはこのクラスの派生クラスとしなければならない。

スーパークラス

Class

クラスメソッド

Segment.new(marker,data=nil,read_size=nil)

セグメントの解析結果を保持するクラスを生成する。 markerにはセグメント識別子(マーカ)の定数を指定する。

dataがnilでなく,かつreadメソッドをもたないオブジェクトを与えた場合には,バイト列が与えられたものと解釈し,Jpeg::StringIOクラスに変換され,解析が開始される。

read_sizeにはdata.readで読みこむべきセグメントのサイズを指定する。

オブジェクト変数

marker

セグメントの識別子(マーカ)を返す。

byte_data

セグメントのデータ部をバイト表現で返す。

インスタンスメソッド

marker_name

セグメントマーカを示す名前を返す。

===(str)

markerまたはmarker_nameと文字列が一致すればtrue。

=~(regexp)

marker_nameと正規表現が一致すればtrue。

size

マーカ,バイトサイズ,データ部を含めたバイトサイズを返す

data=(x)

データ部にバイト表現のデータをセットする。 FORMAT Iグループのセグメント(SOI, RSTn, EOI)の場合,TypeErrorが発生する。

dump

セグメントのバイト表現を以下のフォーマットで返す。

"\xff"|マーカ|ビッグエンディアンで表現したセグメントのbyte数(ushort)|データ部

セグメントのbyte数にはself.sizeの戻り値を,データ部にはself.byte_dataの戻り値をそれぞれ用いる。

parse(data,read_size=nil,&block)

セグメントの解析を開始する。 Jpeg::Segmentクラスでは与えられたデータをオブジェクト変数byte_dataにコピーするだけ。 独自の解析クラスを作成する場合には,このメソッドをオーバーライドすること。

定数

DELIM

JPEGセグメントマーカ開始

IMG

イメージデータ(非マーカ)。 rjpegではイメージを格納するセグメントの識別子に用いられる。

TEM

SOF0

SOF1

SOF2

SOF3

DHT

SOF5

SOF6

SOF7

JPG

SOF9

SOF10

SOF11

DAC

SOF12

SOF13

SOF14

RST0

RST1

RST2

RST3

RST4

RST5

RST6

RST7

SOI

EOI

SOS

DQT

DNL

DRI

DHP

EXP

APP0

APP1

APP2

APP3

APP4

APP5

APP6

APP7

APP8

APP9

APP10

APP11

APP12

APP13

APP14

APP15

JPG0

JPG1

JPG2

JPG3

JPG4

JPG5

JPG6

JPG7

JPG8

JPG9

JPG10

JPG11

JPG12

JPG13

COM

MARKER_NAME

セグメント識別子,セグメント名変換用ハッシュテーブル。

FORMAT_I

Format Iセグメント(データ部を持たないセグメント)のセグメント識別子を格納した配列

Jpeg::StringIO

文字列をIOの様に扱うクラス。 Stringクラスにread, rewind, seekのメソッドが追加される。

スーパークラス

String

クラスメソッド

StringIO.new(x)

xに文字列を指定してオブジェクトを生成する。

インスタンスメソッド

read(x=nil)

オブジェクト内に格納された文字列を現カーソルポインタからx byte読み出し,カーソルポインタをx byte分移動する。 xが省略された場合には文字列を最後まで読み出す。

rewind

カーソルポインタを格納された文字列の先頭に戻す。

seek(x,whence=IO::SEEK_SET)

カーソルポインタをx byte移動する。whenceは移動の始点を意味し,IO::SEEK_SET (文字列の先頭),IO::SEEK_CUR(現在位置),IO::SEEK_END(文字列の末尾)のいずれかを指定する。

Jpeg::SOFData

SOFnセグメントを解析するクラス(サンプル)

スーパークラス

Jpeg::Segment

クラスメソッド

SOFData.new(marker,io,size)

オブジェクト変数

width

JPEG画像の幅。

height

JPEG画像の高さ。

Exif

EXIFデータを解析するクラス

スーパークラス

Jpeg::Segment

例外

Exif::ParseError

EXIFヘッダのパースエラー

スーパークラス

Jpeg::ParseError

クラスメソッド

Exif.new(marker=Jpeg::Segment::APP1,data=nil,size=nil)

Exif.new(marker=Jpeg::Segment::APP1,data=nil,size=nil){|dir| ... }

引数はJpeg::Segment.newと同じ。

ブロックが与えられた場合には,ディレクトリの解析結果がExif::Ifd::Directoryオブジェクトとしてブロックに渡され,ブロックの実行結果がディレクトリの値として保存される。

オブジェクト変数

ifd

直下のIFDを格納した配列

インスタンスメソッド

parse(data,read_size=nil)

parse(data,read_size=nil){|dir| ... }

解析を開始する。

引数,ブロックに与えられる値はExif.newに同じ。

ブロックが与えられた場合には,ディレクトリの解析結果がExif::Ifd::Directoryオブジェクトとしてブロックに渡され,ブロックの実行結果がディレクトリの値として保存される。

EXIFフォーマット以外のデータをあたえた場合,および解析に失敗した場合にはExif::ParseErrorが発生する。

解析に成功した場合,解析前の生データは破棄される。

is_exif?

解析に成功した場合trueが返る。

size

解析後のデータから再構築したセグメントのバイトサイズ。 rexifではデータのパディングを行わないので,データによっては解析前のサイズより30byte程小さくなることがある。

byte_data

解析後のデータからセグメントのデータ部を再構築して返す。 parseに失敗している場合には生データをそのまま返す。

ifds

ifds{|ifd| ... }

すべてのIFD(ブロックが与えられた場合にはブロック内の評価結果が真になったIFD)の配列を返す。

IFDの階層構造に対応するため,各IFDは例のように配列として返される。

例:[[IFD0[ExifIFD[InteroperabilityIFD]]][IFD1]]

ifd(x=nil)

引数を省略した場合にはifdsの結果を一元配列に変換したものが返される。 引数が文字列または正規表現の場合には,識別名が一致したIFDがひとつ返される。整数を指定した場合には,ifdsの結果を一元配列に変換した中からx番目のIFDが返される。

each_ifd{|ifd| ...}

すべてのIFDに対しブロックの内容を実行する。

ifd0

image_ifd

IFD0を格納したExif::Ifdオブジェクトを返す。 存在しない場合にはnilを返す。

ifd1

thumbnail_ifd

IFD1を格納したExif::Ifdオブジェクトを返す。 存在しない場合にはnilを返す。

exif_ifd

ExifIFDを格納したExif::Ifdオブジェクトを返す。 存在しない場合にはnilを返す。

interoperability_ifd

InteroperabilityIFDを格納したExif::Ifdオブジェクトを返す。 存在しない場合にはnilを返す。

dirs

dirs{|d| ... }

すべてのディレクトリ(ブロックが与えられた場合にはブロック内の評価結果が真になったディレクトリ)の配列を返す。

dir(x)

引数に文字列,正規表現を指定した場合にはそれにマッチするタグ名を持ったディレクトリの配列を返す。整数が指定された場合には,その数値をID(タグ)と見なし,一致するタグを持ったディレクトリの配列を返す。

each_dir{|d| ... }

すべてのディレクトリに対しブロックの内容を実行する。

thumbnail

サムネール画像を返す。 サムネール画像がTIFF形式の場合,またはサムネール画像が無い場合はnil。(ToDo)

has_thumbnail?

サムネール画像がある場合true。

has_jpeg_thumbnail?

サムネール画像がJPEGの場合true。

定数

EXIF_ID

EXIFヘッダ文字列

TIFF_MARKER

EXIF TIFFマーカ定義

Exif::Rational

分数を表現するためのクラス。

スーパークラス

Rational

インスタンスメソッド

to_a

[分子,分母]の形式で配列に変換する。

Exif::Data

エンディアン情報を持ったバイトデータを表現するクラス

スーパークラス

Class

クラスメソッド

Data.new(data,endian=:le)

dataにバイトデータ,endianに:le(リトルエンディアンの場合)もしくは:be(ビッグエンディアンの場合)を指定してオブジェクトを生成する。

Data.new_char(x,endian=:le)

Data.new_ascii(x,endian=:le)

Data.new_byte(x,endian=:le)

Data.new_ubyte(x,endian=:le)

Data.new_short(x,endian=:le)

Data.new_ushort(x,endian=:le)

Data.new_long(x,endian=:le)

Data.new_ulong(x,endian=:le)

Data.new_rational(x,endian=:le)

Data.new_urational(x,endian=:le)

Data.new_float(x,endian=:le)

Data.new_double(x,endian=:le)

xに数値,文字列またはExif::Rational型の値を指定し,endianに:le(リトルエンディアン)または:be(ビッグエンディアン)を指定してExif::Dataオブジェクトを生成する。

オブジェクト変数

endian

このオブジェクトのエンディアン。:le(リトルエンディアン)または:be(ビッグエンディアン)が返る。

インスタンスメソッド

get_ushort(offset=0)

get_ulong(offset=0)

現在のエンディアンでバイト表現を読みとる。 offsetを指定した場合,格納されているデータの先頭から指定したbyte数をスキップして読み取りを開始する。

read_char(offset=0,n=1)

read_ascii(offset=0,n=1)

read_byte(offset=0,n=1)

read_ubyte(offset=0,n=1)

read_short(offset=0,n=1)

read_long(offset=0,n=1)

read_rational(offset=0,n=1)

read_urational(offset=0,n=1)

read_ushort(offset=0,n=1)

read_ulong(offset=0,n=1)

read_float(offset=0,n=1)

read_double(offset=0,n=1)

現在のエンディアンでバイト表現をn個読みとり,結果を配列として返す。 offsetを指定した場合,格納されているデータの先頭から指定したbyte数をスキップして読み取りを開始する。

to_s

dump

現在のエンディアンでのバイト表現を返す。

size

バイト表現でのサイズを返す。

定数

PACKSTR

それぞれのエンディアンでのpack,unpack用文字列を収めたのハッシュテーブル

Exif::Ifd

IFDクラス。

パース時に,オブジェクト内に格納するディレクトリおよびIFDにアクセスするための特異メソッドが以下のルールで動的に生成される。

IFD

EXIF2.1で規定されたIFD名の小文字->大文字切替ポイントで'_'を挿入の上,全て小文字に変換。

例) ExifIFD -> exif_ifd()

戻り値はそのIFDを指すExif::Ifdオブジェクト。

ディレクトリ

タグIDを16進表記し,先頭にxをつける。EXIF2.1で規定されたタグ名がある場合には,小文字->大文字切替ポイントで'_'を挿入の上,全て小文字に変換。

例) タグID 0x0100(ImageWidth) -> x0100()およびimage_width()

戻り値はそのディレクトリを指すExif::Ifd::Directoryオブジェクト。

また,IFD1(ThumbnailIFD)の場合でサムネールイメージを発見した場合には,特異メソッドthumbnailおよびthumbnail_imageが動的に生成される。

スーパークラス

Array

クラスメソッド

Ifd.new(ifd_name='',x=nil,offset=0)

Ifd.new(ifd_name='',x=nil,offset=0){|dir| ... }

ifd_nameにこのIFDの名前を,xにExif::Dataクラスでラップされたデータを,offsetに読みこみ開始位置を指定してオブジェクトを生成する。

xを指定した場合はデータの解析が開始される。

ブロックが与えられた場合には,ディレクトリの解析結果がExif::Ifd::Directoryオブジェクトとしてブロックに渡され,ブロックの実行結果がディレクトリの値として保存される。

オブジェクト変数

ifd_name

このIFDのIFD名。

インスタンスメソッド

parse(x,offset=0)

parse(x,offset=0){|dir| ... }

xにExif::Dataクラスでラップされたデータを,offsetに読みこみ開始位置を指定して解析を開始する。

ブロックが与えられた場合には,ディレクトリの解析結果がExif::Ifd::Directoryオブジェクトとしてブロックに渡され,ブロックの実行結果がディレクトリの値として保存される。

解析に成功した場合は次のIFDへのオフセット値が戻る。 解析に失敗した場合はExif::ParseErrorが発生する。

ifds

ifds{|ifd| ... }

自分自身も含めたこのIFD以下に含まれるすべてのIFD(ブロックが与えられた場合にはブロック内の評価結果が真になったIFD)の配列を返す。

IFDの階層構造に対応するため,各IFDは例のように配列として返される。

例:[[IFD0[ExifIFD[InteroperabilityIFD]]][IFD1]]

ifd(x)

引数を省略した場合にはifdsの結果を一元配列に変換したものが返される。 引数が文字列または正規表現の場合には,識別名が一致したIFDがひとつ返される。整数を指定した場合には,ifdsの結果を一元配列に変換した中からx番目のIFDが返される。

each_ifd{|ifd| ... }

自分自身も含めたこのIFD以下に含まれるすべてのIFDに対しブロックの内容を実行する。

dirs(recursivel=true)

dirs(recursivel=true){|d| ... }

このIFDに含まれるすべてのディレクトリ(ブロックが与えられた場合にはブロック内の評価結果が真になったディレクトリ)の配列を返す。

recursivelにfalseを指定すると,このIFDに含まれるIFD以下のディレクトリは検索しない。

dir(x,recursivel=false)

引数に文字列,正規表現を指定した場合にはそれにマッチするタグ名を持ったディレクトリのうち最初に見つかったものを返す。 整数が指定された場合には,その数値をID(タグ)と見なし,一致するタグを持ったディレクトリのうち最初に見つかったものを返す。

recursivelにtrueを指定すると,このIFDに含まれるIFD以下のディレクトリも再帰的に検索する。

each_dir(recursivel=true){|d| ... }

このIFDに含まれるすべてのディレクトリに対しブロックの内容を実行する。

recursivelにfalseを指定すると,このIFDに含まれるIFD以下のディレクトリは検索しない。

byte_size

このIFDのバイト数を返す。

dump(offset=0,endian=:le,has_next_lfd=false)

このIFDのバイト表現を返す。

offsetにはIFDのEXIF TIFFヘッダ先頭からの位置,endianにはエンディアンを指定する。 次のIFDへのリンクを埋め込む場合にはhas_next_lfdにtrueを指定する。 has_next_lfd=falseの場合には,次のIFDが無いものとみなし,"\x00\x00\x00\x00\x00\x00\x00\x00"が埋め込まれる。

特異メソッド

exif_ifd, interoperability_ifd など

直下にあるIFDにアクセスするためのメソッド。Exif::Ifdオブジェクトを返す。

xhhhh (hは4桁の16進数)などディレクトリのタグID

maker, jpeg_interchange_format などディレクトリのタグ名

直下にあるディレクトリにアクセスするためのメソッド。Exif::Ifd::Directoryオブジェクトを返す。

thumbnail_type

ifd_nameがIFD1でサムネールイメージを発見した場合に生成され,サムネールのフォーマットタイプを示すシンボル(:jpegもしくは:tiff)を返す。

thumbnail_image

ifd_nameがIFD1でサムネールイメージを発見した場合に生成され,サムネールのバイト表現を返す。

定数

IFD0

ImageIFD

IFD0のIFD名定義

IFD1

ThumnailIFD

IFD1のIFD名定義

ExifIFD

ExifIFDのIFD名定義 (IFD0.ExifIFD)

InteroperabilityIFD

InteroperabilityIFDのIFD名定義 (IFD0.ExifIFD.InteroperabilityIFD)

Exif::Ifd::Directory

EXIFディレクトリを格納するクラス

スーパークラス

Class

クラス変数

value_parse_proc

valueメソッドでデータを出力する際に使用するプロシージャを格納したハッシュテーブル。

クラスメソッド

Directory.new(ifd_name='',x=nil,offset=0)

ifd_nameにこのディレクトリを格納するIFD名を,xにExif::Dataクラスでラップされたデータを,offsetに読みこみ開始位置を指定してオブジェクトを生成する。

xを指定した場合はデータの解析が開始される。

Directory.use_proc_for(tag,proc)

タグIDがtagの際にvalueメソッドで使用するプロシージャprocを登録する。 タグIDはExif::Ifd::DirectoryのタグID定数,もしくはushortな整数で指定する。

デフォルトではTAG IDがDateTime, DateTimeOriginal, DateTimeDigitizedについて,Exif::Ifd::Directory::TIME_PARSE_PROCが登録されている。

オブジェクト変数

tag

このディレクトリのタグIDを整数で返す。

format

このディレクトリのデータフォーマットを以下の整数で返す。

1: ubyte, 2: ascii, 3: ushort, 4: ulong, 5: urational, 6: byte, 7: undefined, 8: short, 9: long, 10: rational, 11: float, 12: double

インスタンスメソッド

tag_name

このディレクトリのタグ名をIFD名を付加して返す。 タグ名がEXIF2.1で定義されていない場合にはタグIDをフォーマット文字列"0x%04x"でフォーマットして返す。

format_name

このディレクトリのデータフォーマットを文字列で返す。

parse(x,offset=0)

xにExif::Dataクラスでラップされたデータを,offsetに読みこみ開始位置を指 定して解析を開始する。

解析に失敗した場合はExif::ParseErrorが発生する。

value

ディレクトリに格納されたデータの値を返す。 Directory.use_proc_forでパーザプロシージャを指定した場合にはパーザの戻り値を返す。

EXIFでは一つのディレクトリに複数の同一の型の値を格納することが認められているため,デフォルトではformatが2(ascii), 7(undefined),あるいはEXIF2.1でデータ個数の上限が1個と定義されているディレクトリについては直値,それ以外の場合には複数の値を格納した配列を返す。 また,formatが7(undefined)の場合,戻り値はExif::Dataクラスのインスタンスとなる。

value=(x)

ディレクトリに格納するデータの値をセットする。

TAG_NAME定数に格納されるテーブルにフォーマットおよびサイズが定義されている場合には,それに反した値を指定するとTypeErrorが発生する。

is_ifd?

このディレクトリに格納されている値がExif::Ifdオブジェクトの場合true。

is_array?

このディレクトリに格納されている値がArrayクラスおよびその派生クラス(Exif::Ifdクラスを除く)の場合true。

to_a

このディレクトリに格納されている値を配列にして返す。

to_i

このディレクトリに格納されている値を整数にして返す。 変換に失敗した場合は0を返す。

to_f

このディレクトリに格納されている値を浮動小数点数にして返す。 変換に失敗した場合は0.0を返す。

to_s

このディレクトリに格納されている値を文字列にして返す。

to_time

このディレクトリに格納されている値を時刻値にして返す。 変換に失敗した場合はTime.at(0)を返す。

data_num

このディレクトリに格納されているデータの個数(EXIF表現)。

Exif::Ifdを除くArrayオブジェクト,およびformatが7(undefined)の場合にはそのオブジェクトのsizeメソッドの戻り値,formatが2(ascii)の場合にはsizeメソッドの戻り値+1("\x00"),,その他の場合には1が返る。

data_size

このディレクトリに格納されているデータの総byte数(EXIF表現)。

byte_size

このディレクトリの総byte数(EXIF表現)。

data_sizeが4以下の場合DIRENT_SIZE(=12),data_sizeが5以上の場合DIRENT_SIZE+data_sizeが返る。

dump(offset=0,endian=:le)

ディレクトリのバイト表現を[ディレクトリエントリ部,データ部]のフォーマットで返す。data_sizeが4以下の場合にはデータ部はnilになる。

offsetにはディレクトリのEXIF TIFFヘッダ先頭からの位置,endianにはエンディアンを指定する。

dump_head(offset=0,endian=:le)

ディレクトリエントリ部のバイト表現を返す。

offsetにはディレクトリのEXIF TIFFマーカからの位置,endianにはディレクトリのエンディアンを指定する。

dump_data(offset=0,endian=:le,force_dump=false)

データ部のバイト表現を返す。

offsetにはディレクトリのEXIF TIFFマーカからの位置,endianにはディレクトリのエンディアンを指定する。

force_dumpにfalseを指定し,data_sizeが4以下の場合にはnilが返る。

定数

DIRENT_SIZE

ディレクトリエントリ部バイト数

FORMAT_NAME

EXIFで定義されるフォーマット数値を文字列に変換するための配列

FORMAT_SIZE

EXIFで定義されるフォーマット毎のデータ1個あたりのバイト数を格納した配列

READ_PROC

フォーマット毎のデータ読込プロシージャを格納した配列

PACK_PROC

フォーマット毎のデータ書出プロシージャを格納した配列

TIME_PARSE_PROC

EXIFの時刻表現文字列からTimeオブジェクトを生成するためのプロシージャ

TAG_NAME

タグIDとExif::Ifd::Directory::TagInfoオブジェクトを対応付けるハッシュテーブル。

TAG_NAME[タグID].nameでタグ名,TAG_NAME[タグID].formatで許容されるデータフォーマット数値の配列,TAG_NAME[タグID].limitでデータ個数の上限(0の場合上限無し)をそれぞれ取得できる。

InteroperabilityIndex

InteroperabilityVersion

NewSubfileType

SubfileType

ImageWidth

ImageLength

BitsPerSample

Compression

PhotometricInterpretation

ImageDescription

Maker

Model

StripOffsets

Orientation

SamplesPerPixel

RowsPerStrip

StripByteConunts

XResolution

YResolution

PlanarConfiguration

ResolutionUnit

TransferFunction

Software

DateTime

Artist

Predictor

WhitePoint

PrimaryChromaticities

TileWidth

TileLength

TileOffsets

TileByteCounts

SubIFDs

JPEGTables

JpegInterchangeFormat

JpegInterchangeFormatLength

YCbCrCoefficients

YCbCrSubSampling

YCbCrPositioning

ReferenceBlackWhite

RelatedImageFileFormat

RelatedImageWidth

CFARepeatPatternDim

CFAPattern

BatteryLevel

Copyright

ExposureTime

FNumber

IPTC_NAA

ExifIFDPointer

InterColorProfile

ExposureProgram

SpectralSensitivity

GPSInfo

ISOSpeedRatings

OECF

Interlace

TimeZoneOffset

SelfTimerMode

ExifVersion

DateTimeOriginal

DateTimeDigitized

ComponentsConfiguration

CompressedBitsPerPixel

ShutterSpeedValue

ApertureValue

BrightnessValue

ExposureBiasValue

MaxApertureValue

SubjectDistance

MeteringMode

LightSource

Flash

FocalLength

FlashEnergy

SpatialFrequencyResponse

Noise

ImageNumber

SecurityClassification

ImageHistory

SubjectLocation

ExposureIndex

TIFF_EPStandardID

MakerNote

UserComment

SubSecTime

SubSecTimeOriginal

SubSecTimeDigitized

FlashPixVersion

ColorSpace

ExifImageWidth

ExifImageHeight

RelatedSoundFile

InteroperabilityIFDPointer

FlashEnergy2

SpatialFrequencyResponse2

FocalPlaneXResolution

FocalPlaneYResolution

FocalPlaneResolutionUnit

SubjectLocation2

ExposureIndex2

SensingMethod

FileSource

SceneType

CFAPattern2

タグID定義

Exif::Ifd::Directory::TagInfo

EXIF2.1によるタグ毎の定義を記述するためのクラス

スーパークラス

Class

クラスメソッド

TagInfo.new(name,format,limit=0)

nameにタグ名,formatにEXIFで定義されたフォーマット数値,limitにデータ個数の上限を指定してオブジェクトを生成する。

複数のフォーマットを指定する場合にはformatに配列を指定する。

データ個数に制限が無い場合にはlimitに0を指定する。

オブジェクト変数

name

タグ名を返す。

format

フォーマット数値を配列で返す。

limit

データ個数の上限を返す。 データ個数に制限が無い場合は0が返る。