01 ߂

		y      zBonsExif
		yҖ  z  i
		y  zWindows10,Windows7
		yL[  zBXA03027,BonsExif,Bons,annsFM,Exif
		yT|[g  zɃ[BBXA03027@nifty.ne.jp
		yT|[g  zhttp://bonworld.sblo.jp/
		y\tgʁzt[\tgEFA
		y]ڏ  z]ڂ]́AOɎɃ[B

02 \tgЉ

		摜t@C JPG, JPEG, TIF, TIFF ̉摜 Exif ̕\ƍ폜
		\łB

		Intel  Motorola ɑΉĂ܂B

		JPG(JPEG)́AAPP0  APP1 ɑΉĂ܂B

		JPG(JPEG)́AExif ̍폜i摜͍폜܂j\łB

		TIF(TIFF)́AExif ̃NAi폜ł͂܂j\łB

		̃AvP[V́AhbOAhhbv\łB

		hbOAhhbv܂̓t@C[烌X|Xt@CŎw
		ƁAExif ̈ꊇ\łB

03 

		uBonsExif.exevCӂ̃tH_[ɉ𓀂܂B

		uBonsExif.exevN܂

		j[́ut@Cvut@CJvŁA摜t@CI
		B
		BonsExif Ǝ̕@ŁA͂s\܂B͓ȅڍׂ́u12 
		ExifvɋLڂĂ܂B

		j[́uExif\vuExif\ ExifCcrvŁACCR.Exif gp
		͂܂B

		j[́uExif\vuExif\ ExifInfovŁAExifInfo gp
		͂܂B

		j[́uExif\vuExif\ ExifShellvŁAWindows ̋@\g
		pĉ͂܂B

		j[́ut@CvuJPG t@C APP1( Exif) ̉摜ȊO
		폜āAt@CۑvŁAExif ̍폜\łB
		ύX̃t@C̐擪 [No-Exif] ǉāÃtH_ɕ
		܂B

		j[́ut@CvuJPG t@C APP1( Exif) ̉摜ȊO
		폜āAAPP0 폜āAt@CۑvŁAExif ̍폜\
		B
		ύX̃t@C̐擪 [No-Exif] ǉāÃtH_ɕ
		܂B

		j[́ut@CvuTIFF t@C APP1( Exif)) ̉摜
		O폜āAt@CۑvŁAExif ̍폜\łB
		ύX̃t@C̐擪 [No-Exif] ǉāÃtH_ɕ
		܂B

		j[́ut@CvuTIFF t@C̕K{ȊOuāA
		t@CۑvŁAExif ̃NA\łB
		ύX̃t@C̐擪 [No-Exif] ǉāÃtH_ɕ
		܂B

		j[́uݒvuEBhEʒűLvŁA݈ʒuL܂B

		j[́uݒvuXg̏vŁAXg̕ɖ߂
		B
		Xg㕔̊eڂ̋؂}EXňړƁA̕ύX\łB

		j[́uݒvuNv`FbNƁA̋N\
		ɂȂ܂B
		`FbNȂꍇ́ANꂽuBonsExifvLƂȂAɋN
		ĂuBonsExifv͏I܂B

		j[́uݒvuEscŏIv`FbNƁAuEscvL[ŏI
		܂B

		j[́uݒvuQŏIv`FbNƁAuQvL[ŏI
		B

		j[́uݒvu摜\v`FbNƁA摜\܂B

		j[́uݒvut@CۑɁA^CX^vێv`F
		bNƁAExif 폜t@C̃t@CX^v폜O
		Ɠɐݒ肵܂B

		j[́uݒvut@CۑɁAt@Cێv`Fb
		NƁAExif 폜t@C̃t@C폜OƓ
		ɐݒ肵܂B

		AvP[V̏Љ
		ExifSɍ폜ꍇ́Aȉ߂܂B
		uvl̃TCǵuExifǎNv

		J[J̏񂪗~ꍇ́Aȉ߂܂B
		u݂vl̃TCguJpegAnalyzer Plusv

		_E[h́u13 ӎvɋLڂĂ܂B

		R}hC̐ݒB
		R}hCɃt@Cݒ肵ꍇ́AIɏ\
		B
		t@ĆAtpXŎw肵ĉB

		uannsViewṽj[́u\v́uExif\\tg̐ݒv
		uR}hp[^v́u%svłȂu"%s"vƐݒ肵ĉB
		tpX̃t@Cɋ󔒂܂܂ꍇɂ́u"%s"vƐݒ肵ĉ
		Bu%svł̓t@Cēn܂B
		uBonsExifṽj[́ut@Cv́uR}hC\vœn
		ꂽe̊mF\łB

		t@C̐擪u@vŎn܂Ăꍇ́At@C̓X|
		Xt@CƂĈ܂B
		X|Xt@ĆAtpXŐݒ肵ĉB

04 ꊇ폜

		R}hC̐ݒ
		R}hCɃt@Cݒ肵ꍇ́AIɏ\
		B
		t@ĆAtpXŎw肵ĉB

		t@C̐擪u@vŎn܂Ăꍇ́At@C̓X|
		Xt@CƂĈ܂B
		X|Xt@ĆAtpXŐݒ肵ĉB

		X|Xt@C̓e
		t@CtpX1sɐݒ肵ĉB

		ʍ\
		ꊇ폜̏ꍇ́uExif폜vufvu\ύXṽ{^\
		܂B
		󋵈ꗗ́u-----------v́At@C̕ϊ\ĂāA
		珇ԂɈȉ̓eƂȂĂ܂B
		x́u#v͍폜Ƃ͖֌WŁA폜͖̂肠܂B

		01 Exif̍폜sƁu-vu@vɕύX܂B
		02 bDeleteFileError  ُŁu-vu*vɕύX܂B
		03 bGetOffsetWarning xŁu-vu#vɕύX܂B
		04 bGetFileError     ُŁu-vu*vɕύX܂B
		05 bGetSizeError     ُŁu-vu*vɕύX܂B
		06 bSaveFileError    ُŁu-vu*vɕύX܂B
		07 bSaveExtError     ُŁu-vu*vɕύX܂B
		08 bSaveInfoError    ُŁu-vu*vɕύX܂B
		09 bSaveHandleError  ُŁu-vu*vɕύX܂B
		10 bSaveSizeError    ُŁu-vu*vɕύX܂B
		11 bSaveTimeError    ُŁu-vu*vɕύX܂B
		12 bSaveAttrError    ُŁu-vu*vɕύX܂B

		uExif폜v
		擪珇Ԃ Exif 폜Ă܂B
		uBonsExif.exevƓtH_ɁAuBonsExof-Log.txtvŁAOt@
		CIɕۑ܂B

		ufv
		𒆒f܂B

		u\ύXv
		\́u󋵈ꗗvƁut@Cꗗv؂ւ܂B
		u󋵈ꗗv́uԍvu󋵁vut@Cv\܂B
		ut@Cꗗv́AtpX\ꂍB

05 iJpn/Engj

		Japanese
		{̕\ɐ؂ւ܂B

		English
		p̕\ɐ؂ւ܂B

06 

		Windows10 32Bit {

		Windows7  32Bit {

07 annsFM Ƃ̘Ag

		uannsFMv́u}NݒvŁAvONu-KRvŎw肵܂B
		vÓuBonsExif.exevtpXŎw肵ĉB
		IvV́uvw肵ĉB
		t@Cẃu/Qvw肵ĉB

08 CXg[

		kt@C𓀂ĉBȉ̃t@C܂܂Ă܂B
		BonsExif.exe     : st@C
		BonsExif.txt     : t@C
		BonsExif.chm     : wvt@C
		\Language\BonsExif\ExifCcrExif.txt  : t@C
		\Language\BonsExif\ExifExifInfo.txt : t@C
		\Language\BonsExif\ExifShell.txt    : t@C
		\Language\BonsExif\Help.txt         : t@C
		\Language\BonsExif\Main.txt         : t@C

		LanguagevtH_Ɣz̃t@CAuBonsExif.exev
		Rs[tH_ɃRs[܂B

09 ACXg[

		𓀂t@C폜ĉB

		stH_ɍ쐬ꂽȉ̃t@C폜ĂĉB
		BonsExif.ini
		BonsExif-Exf.txtiExifInfõXgj
		BonsExif-Ccr.txtiCCR.Exif̃Xgj
		BonsExif-Pro.txtivpeB̃Xgj
		BonsExif-Log.txtiꊇ폜̃OXgj
		BonsExif-Rcv.txtihbOAhhbvꂽt@CXgj

		WXg͎gpĂ܂B

10 J

		Windows10  Delphi XE2 {łŊJ܂B
		Ver4.00 ́AWindows10  Delphi 12 29.0.51961.7529 {łŊJ
		܂B

11 ]ځEĔzz̏

		̃vO̓t[\tgEFAłB쌠͕Ă܂B
		]ڂ͊{IɎRłCȉ̓_ĉB
		̃lbg֓]ڂꍇ́AOɘA肢܂B
		GAГɌfځAYtꍇɂ́AOɘA肢
		B
		]ڂ̓A[JCu̍\͕ςȂŉB
		t[\tgEFAł邱Ƃ𖾎ĂB

12 ۏ͈ؔ

		̃vOgp邱ƂɂāA邢͎gpłȂ
		ɂāAȂ炩̑QĂA҂͈ؐӔC𕉂܂B
		e̐ӔCɂČ䗘pB

13 藚

		Ver1.0 2017-10-20
		01Fŏ̌JB
		Ver1.1 2017-10-20
		01FWindowsX ̏ꍇ́AuExifShellv̋@\𖳌ɂ܂B
		Ver1.2 2017-10-20
		01Fj[́uExif \ ...v̋@\́At@Cǂݍ܂Ă
		Ȃꍇɂ͖ɂ܂B
		Ver1.3 2017-10-20
		01FR}hCw肵ċNꂽꍇɁA񕔕\
		sɑΉ܂B
		Ver1.4 2017-11-01
		01Ft@CI[vŁAꊇ폜̋@\\ɂ܂B
		Ver1.5 2017-11-10
		01FhbOAhhbvŁAꊇ폜̋@\\ɂ܂B
		Ver2.0 2017-11-14
		01FNɁuannsFMvƁuBonsFMvIĂ܂sɑΉ
		B
		NȂꍇɁAuBonsExifvI锻ŁA^Cg
		o[̌ʂɔ肷悤ɕύX܂B
		Ver2.1 2017-11-16
		01FhbOAhhbvŁuRecv.txtv쐬Ă܂At
		@CuBonsExif-Rcv.txtvɕύX܂B
		Ver2.2 2017-11-17
		01Fj[́uݒvu摜\vŁAk摜\@\
		ǉ܂B
		02FΏۃt@CȊȌꍇ́AuExif 폜̑Ώۃt@Cł͂
		Bv̕\s悤ɂ܂B
		03FtH[̃^CgԈĂ̂C܂B
		Ver2.3 2017-11-17
		01Fj[́uExif\v́uExif\ ExifInfov𑀍삵ɁA
		uannsViewvœ摜\Ăꍇ́AG[ɂȂĂ܂B
		̏ꍇ́AuannsView ĉṽbZ[W\悤
		ɕύX܂B
		Ver2.4 2017-11-25
		01Fj[́uݒvu摜\vŁAk摜\@\ŁA
		傫ȉ摜\łȂsɑΉ܂B
		Ver2.5 2018-12-31
		01Fj[́ut@CvuR}hC\vŁAR}hC
		ɓnꂽ̕\\ɂ܂B
		Ver3.0 2019-09-02
		01FOvONŁAJgfBNg͎st@C̃pX
		w肷悤ɕύX܂B
		02Fwv̍\u.chmvu.txtvɕύX܂B
		03FuOX012DvuOX0012v̏擾ԈĂ̂C܂B
		Ver3.10 2021-07-03
		01Fj[ɁuJpn/Engvǉ܂B{Ɖp̐ؑւ\
		ƂȂ܂B
		Ver3.20 2021-08-19
		01FCʂ̃j[Ɍؑւ̐ݒt@C̓eύX܂
		B
		Ver3.30 2022-10-24
		01FWindows11IMEgpɃNbVs̑΍s
			B茳ł͊mFł݂܂̂ő΍̊mF
			͏oĂ܂B
		Ver4.00 2026-01-26
		01FJ Delphi 12 29.0.51961.7529 ɕύX܂B
		02F}jtFXgŁuDPI̔Fv́uΉvɐݒ肵܂B

14 Exif

Exif ̎擾͂Sނ̕@ōsĂ܂B

1FBonsExifƎŁAoCiŉ
2FCCR.Exif gpăf[^擾iDelphi ̃R|[lgoRĎ擾j
3FExifInfo gpăf[^擾iDelphi ̃R|[lgoRĎ擾j
4Ft@C̃vpeB擾iGNXv[̃vpeBƓej

 BonsFExifƎ̉́iExif̂݁j

01FJpg  Cen̗ȉɎ܂B

 FF D8 FF E1 00 10 45 78 69 66 00 00 49 49 2A 00 08 00 00 00 
FF D8FJPG
FF E1FAPP1
00 10FZOg
45 78 69 66 00 00FExif''
49 49FoCgI[_
2A 00FŒ
08 00 00 00FIFDItZbg

 02 00 ** ** @@ @@ ## ## ## ## $$ $$ $$ $$ ** ** @@ @@ ## ## ## ## $$ $$ $$ $$ %% %% %% %%
02 00FJEg
** **F^O
@@ @@F^Cv
## ## ## ##FJEg
$$ $$ $$ $$FItZbg
** **F^O
@@ @@F^Cv
## ## ## ##FJEg
$$ $$ $$ $$FItZbg
%% %% %% %%FpIFDւ̃ItZbg

02FJpg ̃t@C̓t@C̐擪ȉ̍\ɂȂĂ܂B
APP0  APP15 ܂ł́AK{ł͂܂B
ʓI Exif APP1 Ɋi[Ă܂B
DQT,DHT ͕݂ꍇ܂B

FF D8 SOI   C[WJn
FF E0 APP0  ^Cv  0 AvP[VZOg
FF E1 APP1  ^Cv  1 AvP[VZOg
...
FF EF APP15 ^Cv 15 AvP[VZOg
FF D8 DQT   ʎqe[u
FF C4 DHT   nt}e[u
FF D9 SOI   C[WI

03Ff[^̍\ɂĉĂ܂B
f[^̊i[@ł́ABigEndian  LittleEndian ݂܂B
BigEndian    ́Ag[n CPU ŁAf[^̏AoCg
珑܂܂B
LittleEndian ́ACen   CPU ŁAf[^̏AႢoCg
珑܂܂B
BigEndian  00 2A ̃f[^́ABigEndian ł 00 2A ALittleEndian  2A 00 
ɂȂ܂B

04Ft@CoCi[œǂݍŉ͂s܂B
t@C̐擪ŁAJPG TIF AAPP1 ̗LABigEndian  LittleEndian 
𔻒肵܂B

05FAPP1 ̃f[^͂܂B
APP1 ɂ́A
APP̎ʃR[h[2 oCg] + ZOg[2 oCg] + EXIFʃR[h[6 oCg] 
̍\łB
APP̎ʃR[h́AAPP1 Ȃ̂ FF E1 ɂȂ܂B
ZOǵA APP ̒ABigEndian Ŋi[Ă܂B
EXIF̎ʃR[h́A45 78 69 68 00 00iExif''jŊi[Ă܂B

06FTIFF wb_[̃f[^͂܂B
TIFF wb_[ ́A
oCgI[_[2 oCg] + Exifw[2 oCg] + IFDItZbg[4 oCg] 
̍\łB
oCgI[_́AGfBAɊւݒłB
4D 4D  BigEndianA49 49  LittleEndian Ӗ܂B
Exifw͌ŒŁABigEndian ł 00 2AALittleEndian ł 2A 00 ɂȂ܂B
IFDItZbǵA IFD ܂ł̃ItZbgw肵܂Aʏ͎ɂ邽
߁ATIFF wb_[̃oCg 2+2+4 = 8 w肷鎖ɂȂ܂B
BigEndian ł 00 00 00 08ALittleEndian ł 08 00 00 00 ɂȂ܂B

] TIFF Heddaer ͈ȉ̂悤ɂȂ܂B

BigEndian    4D 4D 00 2A 00 00 00 08
LittleEndian 49 49 2A 00 08 00 00 00

07FIFD ̉͂s܂B
IFD ́A
tB[ȟ[2 oCg] + tB[h[12 oCg] + tB[h[12 oCg] + ... + IFDItZbg[4 oCg] 
̍\łB

tB[h́A
^O[2 oCg] + ^Cv[2 oCg] + [4 oCg] + ItZbg[4 oCg] 
̍\łB
^Oɂ́u摜̕ 0x0100vȂ 01 00 ܂B
00 01 (Little) ܂ 01 00 (Big) ܂B

^Cvɂ́AuShortv      Ȃ     3 ܂B
08 00 (Little) ܂ 00 03 (Big) ܂B

ɂ́Af[^̌Au摜̕ 0x0100vł 1 ܂B
01 00 (Little) ܂ 00 01 (Big) ܂B

ItZbgɂ́Af[^܂B^Cv̃oCg 4 oCgȉ
΁AItZbgɃf[^i[܂B
4 oCg𒴂ꍇ́AItZbgɂ́Af[^i[ĂItZbgl
܂BȂItZbg TIFF wb_[̐擪̃oCgɂȂ܂B
f[^̓AhX̒Ⴂɂ͂܂B
uShortv 1̏ꍇ͂̏ꍇ nn nn 00 00A2̏ꍇ nn nn mm mm ܂B
ItZbg̃f[^ nn nn  mm mm  Little  Big ɏ]܂B

09Fȏ̃[ɏ]ĉ͂s܂B
ۂ̃vO͈ȉɂȂĂ܂B

//JPEG + Exif (Motorola)
(Stream1.Bytes[ 0] = $FF) and (Stream1.Bytes[ 1] = $D8) and  //JPG
(Stream1.Bytes[ 2] = $FF) and (Stream1.Bytes[ 3] = $E1) and  //Œ
(Stream1.Bytes[ 6] = $45) and (Stream1.Bytes[ 7] = $78) and  //Ex
(Stream1.Bytes[ 8] = $69) and (Stream1.Bytes[ 9] = $66) and  //if
(Stream1.Bytes[10] = $00) and (Stream1.Bytes[11] = $00) and  //
(Stream1.Bytes[12] = $4D) and (Stream1.Bytes[13] = $4D) and  //Motorola
(Stream1.Bytes[14] = $00) and (Stream1.Bytes[15] = $2A) then //Œ

//JPEG + Exif (Intel)
(Stream1.Bytes[ 0] = $FF) and (Stream1.Bytes[ 1] = $D8) and  //JPG
(Stream1.Bytes[ 2] = $FF) and (Stream1.Bytes[ 3] = $E1) and  //Œ
(Stream1.Bytes[ 6] = $45) and (Stream1.Bytes[ 7] = $78) and  //Ex
(Stream1.Bytes[ 8] = $69) and (Stream1.Bytes[ 9] = $66) and  //if
(Stream1.Bytes[10] = $00) and (Stream1.Bytes[11] = $00) and  //
(Stream1.Bytes[12] = $49) and (Stream1.Bytes[13] = $49) and  //Intel
(Stream1.Bytes[14] = $2A) and (Stream1.Bytes[15] = $00) then //Œ

//TIFF + Exif (Motorola)
(Stream1.Bytes[ 0] = $FF) and (Stream1.Bytes[ 1] = $E1) and  //TIFF
(Stream1.Bytes[ 4] = $45) and (Stream1.Bytes[ 5] = $78) and  //Ex
(Stream1.Bytes[ 6] = $69) and (Stream1.Bytes[ 7] = $66) and  //if
(Stream1.Bytes[ 8] = $00) and (Stream1.Bytes[ 9] = $00) and  //
(Stream1.Bytes[10] = $4D) and (Stream1.Bytes[11] = $4D) and  //Motorola
(Stream1.Bytes[12] = $00) and (Stream1.Bytes[13] = $2A) then //Œ

//TIFF + Exif (Intel)
(Stream1.Bytes[ 0] = $FF) and (Stream1.Bytes[ 1] = $E1) and  //TIFF
(Stream1.Bytes[ 4] = $45) and (Stream1.Bytes[ 5] = $78) and  //Ex
(Stream1.Bytes[ 6] = $69) and (Stream1.Bytes[ 7] = $66) and  //if
(Stream1.Bytes[ 8] = $00) and (Stream1.Bytes[ 9] = $00) and  //
(Stream1.Bytes[10] = $49) and (Stream1.Bytes[11] = $49) and  //Intel
(Stream1.Bytes[12] = $2A) and (Stream1.Bytes[13] = $00) then //Œ

//TIFF Motorola
(Stream1.Bytes[ 0] = $4D) and (Stream1.Bytes[ 1] = $4D) and  //Motorola
(Stream1.Bytes[ 2] = $00) and (Stream1.Bytes[ 3] = $2A) then //Œ

//TIFF Intel
(Stream1.Bytes[ 0] = $49) and (Stream1.Bytes[ 1] = $49) and  //Intel
(Stream1.Bytes[ 2] = $2A) and (Stream1.Bytes[ 3] = $00) then //Œ

//JPEG + JFIF + Exif (Motorola)
(Stream1.Bytes[ 0] = $FF) and (Stream1.Bytes[ 1] = $D8) and  //JPG
(Stream1.Bytes[ 2] = $FF) and (Stream1.Bytes[ 3] = $E0) and  //Œ
(Stream1.Bytes[ 6] = $4A) and (Stream1.Bytes[ 7] = $46) and  //JF
(Stream1.Bytes[ 8] = $49) and (Stream1.Bytes[ 9] = $46) and  //IF
(Stream1.Bytes[10] = $00) and                                //
(Stream1.Bytes[20] = $FF) and (Stream1.Bytes[21] = $E1) and  //Œ
(Stream1.Bytes[24] = $45) and (Stream1.Bytes[23] = $78) and  //Ex
(Stream1.Bytes[26] = $69) and (Stream1.Bytes[27] = $66) and  //if
(Stream1.Bytes[27] = $00) and (Stream1.Bytes[29] = $00) and  //
(Stream1.Bytes[30] = $4D) and (Stream1.Bytes[31] = $4D) and  //Motorola
(Stream1.Bytes[32] = $00) and (Stream1.Bytes[33] = $2A) then //Œ

//JPEG + JFIF + Exif (Intel)
(Stream1.Bytes[ 0] = $FF) and (Stream1.Bytes[ 1] = $D8) and  //JPG
(Stream1.Bytes[ 2] = $FF) and (Stream1.Bytes[ 3] = $E0) and  //Œ
(Stream1.Bytes[ 6] = $4A) and (Stream1.Bytes[ 7] = $46) and  //JF
(Stream1.Bytes[ 8] = $49) and (Stream1.Bytes[ 9] = $46) and  //IF
(Stream1.Bytes[10] = $00) and                                //
(Stream1.Bytes[20] = $FF) and (Stream1.Bytes[21] = $E1) and  //Œ
(Stream1.Bytes[24] = $45) and (Stream1.Bytes[25] = $78) and  //Ex
(Stream1.Bytes[26] = $69) and (Stream1.Bytes[27] = $66) and  //if
(Stream1.Bytes[28] = $00) and (Stream1.Bytes[29] = $00) and  //
(Stream1.Bytes[30] = $49) and (Stream1.Bytes[31] = $49) and  //Intel
(Stream1.Bytes[32] = $2A) and (Stream1.Bytes[33] = $00) then //Œ

 BonsExif Ǝ̉́iJFIFj

01FJpg  Cen̗ȉɎ܂B

 FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 00 01 00 00 

FF D8FJPG
FF E0FAPP0
00 10FZOg
4A 46 49 46 00FJFIF'
01 01Fo[W
00 F𑜓xP
00 01F𑜓x
00 01Fc𑜓x
00FTlCTCY
00FTlCcTCY

 FF E1 3A 15 45 78 69 66 00 00 49 49 2A 00 08 00 00 00 
FF E1FAPP1
3A 15FZOg
45 78 69 66 00 00FExif''
49 49FoCgI[_
2A 00FŒ
08 00 00 00FIFDItZbg

 BonsExif Ǝ JPGiExifj Exif ̍폜iAPP1j

APP1 ́A
APP̎ʃR[h[2 oCg] + ZOg[2 oCg] + EXIFʃR[h[6 oCg] 
̍\łB
APP1 ̉摜ȊO폜Ă܂B摜ȍꍇ́AuWv
ۑĂ܂B
f[^폜Ă̂ŁAt@CTCY͏ȂĂ܂B

 BonsExif Ǝ JPGiJFEFj Exif ̍폜iAPP0 + APP1j

APP0 ́A
APP̎ʃR[h[2 oCg] + ZOg[2 oCg] + JFIFʃR[h[5 oCg]  + ̑R[h[9 oCg] 
̍\łB
APP1 AAPP0 ɑĐݒ肳Ă܂B

APP1 ́A
APP̎ʃR[h[2 oCg] + ZOg[2 oCg] + EXIFʃR[h[6 oCg] 
̍\łB
APP1 ɁA摜ݒ肵܂Aȍꍇ́A摜́uWvŕۑĂ܂B

APP0  APP1 ꍇɂ́AAPP1 𖳏ɐݒ肵A摜ݒ肵܂B
摜ȍꍇ́AuWvŕۑĂ܂B

 BonsExif Ǝ TIF  Exif ̍폜

IFD ̈ȉ̍ڈȊO̓NAĂ܂B
Exif ́ASĂNAĂ܂B
GPS ́ASĂNAĂ܂B
f[^͍폜ĂȂ̂ŁAt@CTCY͕ς܂B

0x0100 摜̕
0x0101 摜̍
0x0102 摜̃rbg̐[
0x0103 k̎
0x0106 f\
0x0111 摜f[^̃P[V
0x0112 摜
0x0115 R|[lg
0x0116 XgbṽC
0x0117 Xgbṽf[^
0x011A 摜̉̕𑜓x
0x011B 摜̍̉𑜓x
0x011C 摜f[^̕
0x0128 摜̕ƍ̉𑜓x̒P
0x8769 Exif IFDւ̃|C^
0x8825 GPS IFDւ̃|C^
0xA005 ݊IFDւ̃|C^

 CCR.Exif gpăf[^擾iDelphi ̃R|[lgoRĎ擾j

uCCR.Exif Sf[^擾vł͈ȉ̃f[^擾Ă܂
擾ς݂̃f[^͐擪Ɂuvt܂B
//  main dir tags
    property CameraMake: string index ttMake read GetGeneralString write SetGeneralString stored False;
    property CameraModel: string index ttModel read GetGeneralString write SetGeneralString stored False;
    property Copyright: string index ttCopyright read GetGeneralString write SetGeneralString stored False;
    property DateTime: TDateTimeTagValue read GetDateTime write SetDateTime stored False;
    property ImageDescription: string index ttImageDescription read GetGeneralString write SetGeneralString stored False;
    property Orientation: TExifOrientation index Ord(esGeneral) read GetOrientation write SetOrientation stored False;
    property Resolution: TCustomExifResolution read FResolution write SetResolution stored False;
    property Software: string index ttSoftware read GetGeneralString write SetGeneralString stored False;
//  main dir tags set by Windows Explorer (XP+)
    property Author: UnicodeString read GetAuthor write SetAuthor stored False; //falls back to ttArtist if nec
    property Comments: UnicodeString read GetComments write SetComments stored False; //falls back to ttUserComment in the Exif IFD if necessary
    property Keywords: UnicodeString index ttWindowsKeywords read GetGeneralWinString write SetGeneralWinString stored False; //see also Get/SetKeywords
    property Subject: UnicodeString index ttWindowsSubject read GetGeneralWinString write SetGeneralWinString stored False;
    property Title: UnicodeString index ttWindowsTitle read GetGeneralWinString write SetGeneralWinString stored False;
    property UserRating: TWindowsStarRating read GetUserRating write SetUserRating stored False;
//  sub dir tags
    property ApertureValue: TExifFraction index ttApertureValue read GetDetailsFraction write SetDetailsFraction stored False;
    property BodySerialNumber: string index ttBodySerialNumber read GetDetailsString write SetDetailsString stored False;
    property BrightnessValue: TExifSignedFraction index ttBrightnessValue read GetDetailsSFraction write SetDetailsSFraction stored False;
    property CameraOwnerName: string index ttCameraOwnerName read GetDetailsString write SetDetailsString stored False;
    property ColorSpace: TExifColorSpace read GetColorSpace write SetColorSpace stored False;
    property Contrast: TExifContrast read GetContrast write SetContrast stored False;
    property CompressedBitsPerPixel: TExifFraction index ttCompressedBitsPerPixel read GetDetailsFraction write SetDetailsFraction stored False;
    property DateTimeOriginal: TDateTimeTagValue index ttDateTimeOriginal read GetDetailsDateTime write SetDetailsDateTime stored False;
    property DateTimeDigitized: TDateTimeTagValue index ttDateTimeDigitized read GetDetailsDateTime write SetDetailsDateTime stored False;
    property DigitalZoomRatio: TExifFraction index ttDigitalZoomRatio read GetDetailsFraction write SetDetailsFraction stored False;
    property ExifVersion: TCustomExifVersion read FExifVersion write SetExifVersion stored False;
    property ExifImageWidth: TLongWordTagValue index ttExifImageWidth read GetDetailsLongWord write SetExifImageSize stored False;
    property ExifImageHeight: TLongWordTagValue index ttExifImageHeight read GetDetailsLongWord write SetExifImageSize stored False;
    property ExposureBiasValue: TExifSignedFraction index ttExposureBiasValue read GetDetailsSFraction write SetDetailsSFraction stored False;
    property ExposureIndex: TExifFraction index ttExposureIndex read GetDetailsFraction write SetDetailsFraction stored False; //old Kodak camera tag
    property ExposureMode: TExifExposureMode read GetExposureMode write SetExposureMode stored False;
    property ExposureProgram: TExifExposureProgram read GetExposureProgram write SetExposureProgram stored False;
    property ExposureTime: TExifFraction index ttExposureTime read GetDetailsFraction write SetDetailsFraction stored False; //in secs
    property FileSource: TExifFileSource read GetFileSource write SetFileSource stored False;
    property Flash: TExifFlashInfo read FFlash write SetFlash stored False;
    property FlashPixVersion: TCustomExifVersion read FFlashPixVersion write SetFlashPixVersion stored False;
    property FNumber: TExifFraction index ttFNumber read GetDetailsFraction write SetDetailsFraction stored False;
    property FocalLength: TExifFraction index ttFocalLength read GetDetailsFraction write SetDetailsFraction stored False;
    property FocalLengthIn35mmFilm: TWordTagValue read GetFocalLengthIn35mmFilm write SetFocalLengthIn35mmFilm stored False;
    property FocalPlaneResolution: TCustomExifResolution read FFocalPlaneResolution write SetFocalPlaneResolution stored False;
    property GainControl: TExifGainControl read GetGainControl write SetGainControl stored False;
    property ImageUniqueID: string index ttImageUniqueID read GetDetailsString write SetDetailsString stored False;
    property ISOSpeedRatings: TISOSpeedRatings read FISOSpeedRatings write SetISOSpeedRatings;
    property LensMake: string index ttLensMake read GetDetailsString write SetDetailsString stored False;
    property LensModel: string index ttLensModel read GetDetailsString write SetDetailsString stored False;
    property LensSerialNumber: string index ttLensSerialNumber read GetDetailsString write SetDetailsString stored False;
    property LightSource: TExifLightSource read GetLightSource write SetLightSource stored False;
    property MaxApertureValue: TExifFraction index ttMaxApertureValue read GetDetailsFraction write SetDetailsFraction stored False;
    property MeteringMode: TExifMeteringMode read GetMeteringMode write SetMeteringMode stored False;
    property OffsetSchema: TLongIntTagValue read GetOffsetSchema write SetOffsetSchema stored False;
    property RelatedSoundFile: string index ttRelatedSoundFile read GetDetailsString write SetDetailsString stored False;
    property Rendering: TExifRendering read GetRendering write SetRendering stored False;
    property Saturation: TExifSaturation read GetSaturation write SetSaturation stored False;
    property SceneCaptureType: TExifSceneCaptureType read GetSceneCaptureType write SetSceneCaptureType stored False;
    property SceneType: TExifSceneType read GetSceneType write SetSceneType stored False;
    property SensingMethod: TExifSensingMethod read GetSensingMethod write SetSensingMethod stored False;
    property Sharpness: TExifSharpness read GetSharpness write SetSharpness stored False;
    property ShutterSpeedValue: TExifSignedFraction index ttShutterSpeedValue read GetDetailsSFraction write SetDetailsSFraction stored False; //in APEX; for display, you may well prefer to use ShutterSpeedInMSecs
    property SpectralSensitivity: string index ttSpectralSensitivity read GetDetailsString write SetDetailsString;
    property SubjectDistance: TExifFraction index ttSubjectDistance read GetDetailsFraction write SetDetailsFraction stored False;
    property SubjectDistanceRange: TExifSubjectDistanceRange read GetSubjectDistanceRange write SetSubjectDistanceRange stored False;
    property SubjectLocation: TSmallPoint read GetSubjectLocation write SetSubjectLocation stored False;
    property WhiteBalanceMode: TExifWhiteBalanceMode read GetWhiteBalance write SetWhiteBalance stored False;
//  sub dir tags whose data are rolled into the DateTime properties, so don't display them for the sake of it
    property SubsecTime: string index ttSubsecTime read GetDetailsString write SetDetailsString stored False;
    property SubsecTimeOriginal: string index ttSubsecTimeOriginal read GetDetailsString write SetDetailsString stored False;
    property SubsecTimeDigitized: string index ttSubsecTimeDigitized read GetDetailsString write SetDetailsString stored False;
//  Interop
    property InteropTypeName: string read GetInteropTypeName write SetInteropTypeName stored False;
    property InteropVersion: TCustomExifVersion read FInteropVersion write SetInteropVersion stored False;
//  GPS
    property GPSVersion: TCustomExifVersion read FGPSVersion write SetGPSVersion stored False;
    property GPSLatitude: TGPSLatitude read FGPSLatitude write SetGPSLatitude;
    property GPSLongitude: TGPSLongitude read FGPSLongitude write SetGPSLongitude;
    property GPSAltitudeRef: TGPSAltitudeRef read GetGPSAltitudeRef write SetGPSAltitudeRef stored False;
    property GPSAltitude: TExifFraction index ttGPSAltitude read GetGPSFraction write SetGPSFraction stored False;
    property GPSSatellites: string index ttGPSSatellites read GetGPSString write SetGPSString stored False;
    property GPSStatus: TGPSStatus read GetGPSStatus write SetGPSStatus stored False;
    property GPSMeasureMode: TGPSMeasureMode read GetGPSMeasureMode write SetGPSMeasureMode stored False;
    property GPSDOP: TExifFraction index ttGPSDOP read GetGPSFraction write SetGPSFraction stored False;
    property GPSSpeedRef: TGPSSpeedRef read GetGPSSpeedRef write SetGPSSpeedRef stored False;
    property GPSSpeed: TExifFraction index ttGPSSpeed read GetGPSFraction write SetGPSFraction stored False;
    property GPSTrackRef: TGPSDirectionRef index ttGPSTrackRef read GetGPSDirection write SetGPSDirection stored False;
    property GPSTrack: TExifFraction index ttGPSTrack read GetGPSFraction write SetGPSFraction;
    property GPSImgDirectionRef: TGPSDirectionRef index ttGPSImgDirectionRef read GetGPSDirection write SetGPSDirection stored False;
    property GPSImgDirection: TExifFraction index ttGPSImgDirection read GetGPSFraction write SetGPSFraction;
    property GPSMapDatum: string index ttGPSMapDatum read GetGPSString write SetGPSString;
    property GPSDestLatitude: TGPSLatitude read FGPSDestLatitude write SetGPSDestLatitude;
    property GPSDestLongitude: TGPSLongitude read FGPSDestLongitude write SetGPSDestLongitude;
    property GPSDestBearingRef: TGPSDirectionRef index ttGPSDestBearingRef read GetGPSDirection write SetGPSDirection stored False;
    property GPSDestBearing: TExifFraction index ttGPSDestBearing read GetGPSFraction write SetGPSFraction stored False;
    property GPSDestDistanceRef: TGPSDistanceRef read GetGPSDestDistanceRef write SetGPSDestDistanceRef stored False;
    property GPSDestDistance: TExifFraction index ttGPSDestDistance read GetGPSFraction write SetGPSFraction stored False;
    property GPSDifferential: TGPSDifferential read GetGPSDifferential write SetGPSDifferential stored False;
    property GPSDateTimeUTC: TDateTimeTagValue read GetGPSDateTimeUTC write SetGPSDateTimeUTC stored False;
//  GPS tags whose data are rolled into the GPSDataTimeUTC property, so don't display them for the sake of it
    property GPSDateStamp: string index ttGPSDateStamp read GetGPSString write SetGPSString stored False;
    property GPSTimeStampHour: TExifFraction index 0 read GetGPSTimeStamp write SetGPSTimeStamp stored False;
    property GPSTimeStampMinute: TExifFraction index 1 read GetGPSTimeStamp write SetGPSTimeStamp stored False;
    property GPSTimeStampSecond: TExifFraction index 2 read GetGPSTimeStamp write SetGPSTimeStamp stored False;
//  thumbnail tags
    property ThumbnailOrientation: TExifOrientation index Ord(esThumbnail) read GetOrientation write SetOrientation stored False;
    property ThumbnailResolution: TCustomExifResolution read FThumbnailResolution write SetThumbnailResolution stored False;

 ExifInfo gpăf[^擾iDelphi ̃R|[lgoRĎ擾j

uExifInfo Sf[^擾vł͈ȉ̃f[^擾Ă܂Aǉ̃f[
^ΘA肢܂B
擾ς݂̃f[^͐擪Ɂuvt܂B

u\[XvO̓ev
  StrListExif.Add(EXIF_DATA_0 + #09 + '$9000' + #09 + 'Exif Version');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0000' + #09 + 'GPS Version');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$A000' + #09 + 'FlashPix Version');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$9286' + #09 + 'Rg');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$010F' + #09 + '[J[');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0110' + #09 + '@햼');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0131' + #09 + '\tgEGA');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$8298' + #09 + '쌠');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$013B' + #09 + 'Be(ҏW)');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$9003' + #09 + 'Be');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0132' + #09 + 'ŏIҏW');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0101' + #09 + '摜 Pixel');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0100' + #09 + '摜 Pixel');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$9207' + #09 + '[h');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$9208' + #09 + '');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$9209' + #09 + 'Xg{');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$A217' + #09 + 'ZT');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$9206' + #09 + 'ʑ̋(m)');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0012' + #09 + 'GPS nn');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$000A' + #09 + 'GPS ʎ');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0009' + #09 + 'GPS ʒ');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0006' + #09 + 'GPS x(m)');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0001' + #09 + 'GPS ܓx');
  StrListExif.Add(EXIF_DATA_0 + #09 + '$0003' + #09 + 'GPS ox');

uExif ꗗv
  // TIFF IFD ^O
  Exif_SOI = $FFD8;
  Exif_SOF0 = $FFC0;
  Exif_APP1 = $FFE1;
Exif_ImageWidth = $0100;
Exif_ImageLength = $0101;
Exif_BitsPerSample = $0102;
  Exif_Compression = $0103;
  Exif_Photometric = $0106;
 Exif_Orientation = $0112;
  Exif_SamplesPerPixel = $0115;
  Exif_PlanarConfiguration = $011C;
  Exif_YCbCrSubSampling = $0212;
  Exif_YCbCrPositioning = $0213;
  Exif_XResolution = $011A;
  Exif_YResolution = $011B;
  Exif_ResolutionUnit = $0128;
  Exif_StripOffsets = $0111;
  Exif_RowsPerStrip = $0116;
  Exif_StripByteCounts = $0117;
  Exif_JPEGInterchangeFormat = $0201;
  Exif_JPEGInterchangeFormatLength = $0202;
  Exif_TransferFunction = $012D;
  Exif_WhitePoint = $013E;
  Exif_PrimaryChromaticities = $013F;
  Exif_YCbCrCoefficients = $0211;
  Exif_ReferenceBlackWhite = $0214;
Exif_DateTime = $0132;
  Exif_ImageDescription = $010E;
Exif_Make = $010F;
Exif_Model = $0110;
Exif_Software = $0131;
Exif_Artist = $013B;
Exif_Copyright = $8298;
  Exif_ExifIFDPointer = $8769;
  Exif_GPSInfoIFDPointer = $8825;

  // Exif IFD ^O
Exif_ExifVersion = $9000;
Exif_FlashPixVersion = $A000;
  Exif_ColorSpace = $A001;
  Exif_ComponentsConfiguration = $9101;
  Exif_CompressedBitsPerPixel = $9102;
  Exif_PixelXDimension = $A002;
  Exif_PixelYDimension = $A003;
  Exif_MakerNote = $927C;
Exif_UserComment = $9286;
  Exif_RelatedSoundFile = $A004;
Exif_DateTimeOriginal = $9003;
Exif_DateTimeDigitized = $9004;
  Exif_SubSecTime = $9290;
  Exif_SubSecTimeOriginal = $9291;
  Exif_SubSecTimeDigitized = $9292;
  Exif_ExposureTime = $829A;
  Exif_FNumber = $829D;
  Exif_ExposureProgram = $8822;
  Exif_SpectralSensitivity = $8824;
  Exif_ISOSpeedRatings = $8827;
  Exif_OECF = $8828;
  Exif_ShutterSpeedValue = $9201;
  Exif_ApertureValue = $9202;
  Exif_BrightnessValue = $9203;
  Exif_ExposureBiasValue = $9204;
  Exif_MaxApertureValue = $9205;
Exif_SubjectDistance = $9206;
Exif_MeteringMode = $9207;
Exif_LightSource = $9208;
Exif_Flash = $9209;
  Exif_FocalLength = $920A;
  Exif_FlashEnergy = $A20B;
  Exif_SpatialFrequencyResponse = $A20C;
  Exif_FocalPlaneXResolution = $A20E;
  Exif_FocalPlaneYResolution = $A20F;
  Exif_FocalPlaneResolutionUnit = $A210;
  Exif_SubjectLocation = $A214;
  Exif_ExposureIndex = $A215;
Exif_SensingMethod = $A217;
  Exif_FileSource = $A300;
  Exif_SceneType = $A301;
  Exif_CFAPattern = $A302;
  Exif_InteroperabilityIFDPointer = $A005;

  // GPS IFD ^O
Exif_GPSVersionID = $0000;
Exif_GPSLatitudeRef = $0001;
  Exif_GPSLatitude = $0002;
Exif_GPSLongitudeRef = $0003;
  Exif_GPSLongitude = $0004;
  Exif_GPSAltitudeRef = $0005;
Exif_GPSAltitude = $0006;
  Exif_GPSTimeStamp = $0007;
  Exif_GPSSatellites = $0008;
Exif_GPSStatus = $0009;
Exif_GPSMeasureMode = $000A;
  Exif_GPSDOP = $000B;
  Exif_GPSSpeedRef = $000C;
  Exif_GPSSpeed = $000D;
  Exif_GPSTrackRef = $000E;
  Exif_GPSTrack = $000F;
  Exif_GPSImgDirectionRef = $0010;
  Exif_GPSImgDirection = $0011;
Exif_GPSMapDatum = $0012;
  Exif_GPSDestLatitudeRef = $0013;
  Exif_GPSDestLatitude = $0014;
  Exif_GPSDestLongitudeRef = $0015;
  Exif_GPSDestLongitude = $0016;
  Exif_GPSDestBearingRef = $0017;
  Exif_GPSDestBearing = $0018;
  Exif_GPSDestDistanceRef = $0019;
  Exif_GPSDestDistance = $001A;

  // Interoperability IFD ^O
  Exif_InteroperabilityIndex = $0001;
  Exif_InteroperabilityVersion = $0002;
  Exif_RelatedImageFileFormat = $1000;
  Exif_RelatedImageWidth = $1001;
  Exif_RelatedImageLength = $1002;

t@C̃vpeB擾iGNXv[̃vpeBƓej

Windows ̋@\gpĎ擾Ă܂B

15 ӎ

		Exif̕\ł́Aȉ̃TCg̏pĂ܂B
		肪Ƃ܂B

		uvl̃TCǵuExifǎNv
		http://enrai.matrix.jp/exif.html

		u݂vl̃TCguJpegAnalyzer Plusv
		http://hp.vector.co.jp/authors/VA032610/

		u݂vl̃TCg
		http://fow.minim.ne.jp/compo/exifinfo.html

