
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
	<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head><card id="MainCard" title="&#x6B22;&#x8FCE;&#x5149;&#x4E34;"><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a><br/>&nbsp;</p><p><b>&#x6807;&#x9898;&#x3A;</b> &#x41;&#x53;&#x50;&#x8BFB;&#x53D6;&#x4A;&#x50;&#x47;&#x56FE;&#x50CF;&#x45;&#x78;&#x69;&#x66;&#x4FE1;&#x606F;&#x7C7B;</p><p><b>&#x4F5C;&#x8005;&#x3A;</b> &#x64;&#x6E;&#x61;&#x77;&#x6F;</p><p><b>&#x65E5;&#x671F;&#x3A;</b> &#x32;&#x30;&#x31;&#x30;&#x2D;&#x30;&#x31;&#x2D;&#x31;&#x35;&#x20;&#x30;&#x38;&#x3A;&#x31;&#x33;&#x20;&#x50;&#x4D;</p><p><b>&#x5206;&#x7C7B;&#x3A;</b> <a href="wap.asp?do=showLog&amp;cateID=5">&#x57;&#x65;&#x62;&#x7F16;&#x7A0B;</a></p><p><b>&#x5185;&#x5BB9;&#x3A;</b> &#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;&lt;%<br/>const IFD_IDX_Tag_No = 0<br/>const IFD_IDX_Tag_Name = 1<br/>const IFD_IDX_Data_Format = 2<br/>const IFD_IDX_Components = 3<br/>const IFD_IDX_Value = 4<br/>const IFD_IDX_Value_Desc = 5<br/>const IFD_IDX_OffsetToValue = 6<br/>Class Cls_Exif<br/>&#160;&#160;&#160;&#160;Private ExifLookup<br/>&#160;&#160;&#160;&#160;Private Offset_to_IFD0<br/>&#160;&#160;&#160;&#160;Private Offset_to_APP1<br/>&#160;&#160;&#160;&#160;Private Offset_to_TIFF<br/>&#160;&#160;&#160;&#160;Private Length_of_APP1<br/>&#160;&#160;&#160;&#160;Private Offset_to_Next_IFD<br/>&#160;&#160;&#160;&#160;Private IFDDirectory<br/>&#160;&#160;&#160;&#160;Private Offset_to_ExifSubIFD<br/>&#160;&#160;&#160;&#160;Private ImageFileName<br/>&#160;&#160;&#160;&#160;Private IsLoaded<br/>&#160;&#160;&#160;&#160;Private ExifTemp<br/>&#160;&#160;&#160;&#160;Private Sub Class_Initialize()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Set ExifLookup = Server.Cr&#101;ateObject(&#34;Scripting.Dictionary&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;IFD0 Tags<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Image Description&#34;, &#34;010E&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Camera Make&#34;, &#34;010F&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Camera Model&#34;, &#34;0110&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Orientation&#34;, &#34;0112&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;X Resolution&#34;, &#34;011A&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Y Resolution&#34;, &#34;011B&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Resolution Unit&#34;, &#34;0128&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Software&#34;, &#34;0131&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Date Time&#34;, &#34;0132&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;White Point&#34;, &#34;013E&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Primary Chromaticities&#34;, &#34;013F&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;YCbCr Coefficients&#34;, &#34;0211&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;YCbCr Positioning&#34;, &#34;0213&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Reference Black White&#34;, &#34;0214&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Copyright&#34;, &#34;8298&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Exif Offset&#34;, &#34;8769&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;ExifSubIFD Tags<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Exposure Time&#34;, &#34;829A&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;FStop&#34;, &#34;829D&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Exposure Program&#34;, &#34;8822&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;ISO Speed Ratings&#34;, &#34;8827&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Exif Version&#34;, &#34;9000&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Date Time o&#114;iginal&#34;, &#34;9003&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Date Time Digitized&#34;, &#34;9004&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Components Configuration&#34;, &#34;9101&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Compressed Bits Per Pixel&#34;, &#34;9102&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Shutter Speed Value&#34;, &#34;9201&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Aperture Value&#34;, &#34;9202&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Brightness Value&#34;, &#34;9203&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Exposure Bias Value&#34;, &#34;9204&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Max Aperture Value&#34;, &#34;9205&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Subject Distance&#34;, &#34;9206&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Metering Mode&#34;, &#34;9207&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Light Source&#34;, &#34;9208&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Flash&#34;, &#34;9209&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Focal Length&#34;, &#34;920A&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Maker Note&#34;, &#34;927C&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;User Comment&#34;, &#34;9286&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Subsec Time&#34;, &#34;9290&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Subsec Time o&#114;iginal&#34;, &#34;9291&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Subsec Time Digitized&#34;, &#34;9292&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Flash Pix Version&#34;, &#34;A000&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Color Space&#34;, &#34;A001&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Exif Image Width&#34;, &#34;A002&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Exif Image Height&#34;, &#34;A003&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Related Sound File&#34;, &#34;A004&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Exif Interoperability Offset&#34;, &#34;A005&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Focal Plane X Resolution&#34;, &#34;A20E&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Focal Plane Y Resolution&#34;, &#34;A20F&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Focal Plane Resolution Unit&#34;, &#34;A210&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Exposure Index&#34;, &#34;A215&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Sensing Method&#34;, &#34;A217&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;File Source&#34;, &#34;A300&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Scene Type&#34;, &#34;A301&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;CFA Pattern&#34;, &#34;A302&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;GPS IFD Tags 2010-01-17 dnawo<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;GPSVersionID&#34;, &#34;0000&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;GPSLatitudeRef&#34;, &#34;0001&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;GPSLatitude&#34;, &#34;0002&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;GPSLongitudeRef&#34;, &#34;0003&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;GPSLongitude&#34;, &#34;0004&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;GPSAltitudeRef&#34;, &#34;0005&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;GPSAltitude&#34;, &#34;0006&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;Interoperability IFD Tags<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Interoperability Index&#34;, &#34;01&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Interoperability Version&#34;, &#34;02&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Related Image File Format&#34;, &#34;1000&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Related Image Width&#34;, &#34;1001&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Related Image Length&#34;, &#34;1002&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;IFD1 Tags<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Image Width&#34;, &#34;0100&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Image Height&#34;, &#34;0101&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Bits Per Sample&#34;, &#34;0102&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Compression&#34;, &#34;0103&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Photometric Interpretation&#34;, &#34;0106&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Strip Offsets&#34;, &#34;0111&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Sample Per Pixel&#34;, &#34;0115&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Rows Per Strip&#34;, &#34;0116&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Strip Byte Counts&#34;, &#34;0117&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;X Resolution 2&#34;, &#34;011A&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Y Resolution 2&#34;, &#34;011B&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Planar Configuration&#34;, &#34;011C&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Resolution Unit 2&#34;, &#34;0128&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;JPEG Interchange Format&#34;, &#34;0201&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;JPEG Interchange Format Length&#34;, &#34;0202&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;YCbCr Coeffecients&#34;, &#34;0211&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;YCbCr Sub Sampling&#34;, &#34;0212&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;YCbCr Positioning 2&#34;, &#34;0213&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Reference Black White 2&#34;, &#34;0214&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;Misc Tags<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;New Subfile Type&#34;, &#34;FE&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Subfile Type&#34;, &#34;FF&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Transfer Function&#34;, &#34;012D&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Artist&#34;, &#34;013B&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Predictor&#34;, &#34;013D&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Tile Width&#34;, &#34;0142&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Tile Length&#34;, &#34;0143&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Tile Offsets&#34;, &#34;0144&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Tile Byte Counts&#34;, &#34;0145&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Sub IFDs&#34;, &#34;014A&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;JPEG Tables&#34;, &#34;015B&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;CFA Repeat Pattern Dim&#34;, &#34;828D&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;CFA Pattern 2&#34;, &#34;828E&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Battery Level&#34;, &#34;828F&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;IPTC_NAA&#34;, &#34;83BB&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Inter Color Profile&#34;, &#34;8773&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Spectral Sensitivity&#34;, &#34;8824&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;GPS Info&#34;, &#34;8825&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;OECF&#34;, &#34;8828&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Interlace&#34;, &#34;8829&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Time Zone Offset&#34;, &#34;882A&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Self Timer Mode&#34;, &#34;882B&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Flash Energy&#34;, &#34;920B&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Spatial Frequency Response&#34;, &#34;920C&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Noise&#34;, &#34;920D&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Image Number&#34;, &#34;9211&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Security Classification&#34;, &#34;9212&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Image History&#34;, &#34;9213&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Subject Location&#34;, &#34;9214&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Exposure Index 2&#34;, &#34;9215&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;TIFFEP Standard ID&#34;, &#34;9216&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Flash Energy 2&#34;, &#34;A20B&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Spatial Frequency Response 2&#34;, &#34;A20C&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifLookup.Add &#34;Subject Location 2&#34;, &#34;A214&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifTemp=array(0)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory = array(0)<br/>&#160;&#160;&#160;&#160;End Sub<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Private Sub class_terminate()<br/>&#160;&#160;&#160;&#160;End Sub<br/>&#160;&#160;&#160;&#160;Public Property Let ImageFile(ByVal vNewValue)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ImageFileName = vNewValue<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LoadImage ImageFileName<br/>&#160;&#160;&#160;&#160;End Property<br/>&#160;&#160;&#160;&#160;Public Property Get ImageFile()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ImageFile=ImageFileName<br/>&#160;&#160;&#160;&#160;End Property<br/>&#160;&#160;&#160;&#160;Public Function LookupExifTag(which)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dim item<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for each item in ExifLookup<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if ExifLookup(item) = which then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LookupExifTag = item<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;exit function<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;next<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LookupExifTag = which<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Public Function hasExifInfo()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IsLoaded = False o&#114; ImageFileName = &#34;&#34; Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;hasExifInfo = False<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ElseIf UBound(IFDDirectory)&lt;1 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;hasExifInfo = False<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;hasExifInfo = True<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Public Function GetExifByName(ExifTag)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim i<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IsLoaded = False And ImageFileName &lt;&gt; &#34;&#34; Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LoadImage (ImageFileName)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ElseIf IsLoaded = False And ImageFileName = &#34;&#34; Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit Function<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For i = 0 To UBound(IFDDirectory) - 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(i)(IFD_IDX_Tag_Name) = ExifTag Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(i)(IFD_IDX_Value_Desc) &lt;&gt; &#34;&#34; then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetExifByName = IFDDirectory(i)(IFD_IDX_Value_Desc)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetExifByName = IFDDirectory(i)(IFD_IDX_Value)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit For<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Private sub LoadImage(picFile)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ImageFileName = &#34;&#34; Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ImageFileName = picFile<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ImageFileName = &#34;&#34; Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit sub<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;OpenJPGFile ImageFileName<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If InspectJPGFile = False Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IsLoaded = False<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit Sub<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IsIntel Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Offset_to_IFD0 = ByteToLong(ExifTemp(Offset_to_APP1 + 17), ExifTemp(Offset_to_APP1 + 16), ExifTemp(Offset_to_APP1 + 15), ExifTemp(Offset_to_APP1 + 14))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Offset_to_IFD0 = ByteToLong(ExifTemp(Offset_to_APP1 + 14), ExifTemp(Offset_to_APP1 + 15), ExifTemp(Offset_to_APP1 + 16), ExifTemp(Offset_to_APP1 + 17))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IsLoaded = True<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetDirectoryEntries Offset_to_TIFF + Offset_to_IFD0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;MakeSenseOfMeaninglessValues<br/>&#160;&#160;&#160;&#160;End sub<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Private Function InspectJPGFile()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim i<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if UBound(ExifTemp)&lt;=0 then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InspectJPGFile = False<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit Function<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ExifTemp(0) &lt;&gt; &amp;HFF And ExifTemp(1) &lt;&gt; &amp;HD8 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InspectJPGFile = False<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For i = 2 To UBound(ExifTemp) - 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ExifTemp(i) = &amp;HFF And ExifTemp(i + 1) = &amp;HE1 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Offset_to_APP1 = i<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit For<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_APP1 = 0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InspectJPGFile = False<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Offset_to_TIFF = Offset_to_APP1 + 10<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Length_of_APP1 = ByteToInt(ExifTemp(Offset_to_APP1 + 2), ExifTemp(Offset_to_APP1 + 3))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Not (ExifTemp(Offset_to_APP1 + 4) = ASC(&#34;E&#34;) And ExifTemp(Offset_to_APP1 + 5) = ASC(&#34;x&#34;) And ExifTemp(Offset_to_APP1 + 6) = ASC(&#34;i&#34;) And ExifTemp(Offset_to_APP1 + 7) = ASC(&#34;f&#34;)) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InspectJPGFile = False<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit Function<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InspectJPGFile = True<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Private Function IsIntel()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ExifTemp(Offset_to_TIFF) = &amp;H49 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IsIntel = True<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IsIntel = False<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Private Function OpenJPGFile(FileName)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const TristateUseDefault = -2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const TristateTrue = -1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const TristateFalse = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const ForReading = 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const ForWriting = 2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const ForAppending = 8<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim Ascii, LastByte, CurByte, SOSFound<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim FSO, File, i<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Not FileName = &#34;&#34; Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If InStr(1, FileName, &#34;:\&#34;) = 0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FileName = Server.MapPath(FileName)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Set FSO = Server.Cr&#101;ateObject(&#34;Scripting.FileSystemObject&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If FSO.FileExists(FileName) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Set File = Server.Cr&#101;ateObject(&#34;ADODB.Stream&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;File.Type = 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;File.Mode = 3<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;File.Open <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;File.LoadFromFile FileName<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;i = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;While Not File.EOS and SOSFound = false<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Ascii = ascb(File.Read(1))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LastByte = CurByte<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CurByte = Ascii<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;&#x8BFB;&#x5230;SOS Maker<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (LastByte = &amp;HFF and CurByte = &amp;HDA) o&#114; i &gt; 100000 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SOSFound = true<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifTemp(i) = CurByte<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;i = i + 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReDim Preserve ExifTemp(i)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Wend<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;File.Close<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Set File = Nothing<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Set FSO = Nothing<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Private Sub GetDirectoryEntries(Offset)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const ExifOffset = &#34;8769&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const GPSOffset = &#34;8825&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const MakerNote = &#34;927C&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_BYTE = 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_STRING = 2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_SHORT = 3<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_LONG = 4<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_RATIONAL = 5<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_SBYTE = 6<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_UNDEFINED = 7<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_SSHORT = 8<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_SLONG = 9<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_SRATIONAL = 10<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_SINGLE = 11<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const m_DOUBLE = 12<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim No_of_Entries<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim Upper_IFDDirectory<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim NewDimensions<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim Processed_ExifSubIFD<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim BytesPerComponent<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim Offset_to_MakerNote<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim i, j, k<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IsIntel Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;No_of_Entries = ByteToInt(ExifTemp(Offset + 1), ExifTemp(Offset + 0))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;No_of_Entries = ByteToInt(ExifTemp(Offset + 0), ExifTemp(Offset + 1))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;On Error Resume Next<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Upper_IFDDirectory = UBound(IFDDirectory)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;On Error GoTo 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NewDimensions = Upper_IFDDirectory + No_of_Entries<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReDim Preserve IFDDirectory(NewDimensions)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For i = 1 To No_of_Entries<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;k = Upper_IFDDirectory + i - 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k) = array(null,null,null,null,null,null,null)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IsIntel Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Tag_No) = Hex0(ExifTemp((Offset + 2) + ((i - 1) * 12) + 1)) &amp; Hex0(ExifTemp((Offset + 2) + ((i - 1) * 12) + 0))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Data_Format) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 3), ExifTemp((Offset + 2) + ((i - 1) * 12) + 2))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Components) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 7), ExifTemp((Offset + 2) + ((i - 1) * 12) + 6), ExifTemp((Offset + 2) + ((i - 1) * 12) + 5), ExifTemp((Offset + 2) + ((i - 1) * 12) + 4))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Sel&#101;ct Case IFDDirectory(k)(IFD_IDX_Data_Format)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case m_BYTE, m_SBYTE<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BytesPerComponent = 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent &lt;= 4 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToByte((Offset + 2) + ((i - 1) * 12) + 8, (Offset + 2) + ((i - 1) * 12) + 8 + IFDDirectory(k)(IFD_IDX_Components) - 1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = &#34;00&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case m_STRING, m_UNDEFINED<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BytesPerComponent = 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent &lt;= 4 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToStr((Offset + 2) + ((i - 1) * 12) + 8, (Offset + 2) + ((i - 1) * 12) + 8 + IFDDirectory(k)(IFD_IDX_Components) - 1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToStr(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = &#34;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case m_SHORT, m_SSHORT<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BytesPerComponent = 2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent &lt;= 4 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Sel&#101;ct Case IFDDirectory(k)(IFD_IDX_Components)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case 2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10)) + ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End Sel&#101;ct<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case m_LONG, m_SLONG<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BytesPerComponent = 4<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent &lt;= 4 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case m_RATIONAL, m_SRATIONAL<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BytesPerComponent = 8<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Sel&#101;ct Case IFDDirectory(k)(IFD_IDX_Components)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 3), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 2), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 1), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 0)) &amp; &#34;/&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 7), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 6), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 5), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 4))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = &#34;0/0&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case 3 &#39;GPS<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 3), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 2), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 1), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 0)) &amp; &#34;/&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 7), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 6), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 5), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 4)) &amp; &#34;,&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 11), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 10), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 9), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 8)) &amp; &#34;/&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 15), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 14), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 13), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 12)) &amp; &#34;,&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 19), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 18), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 17), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 16)) &amp; &#34;/&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 23), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 22), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 21), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 20))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = &#34;0/0,0/0,0/0&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End Sel&#101;ct<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End Sel&#101;ct<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Tag_No) = Hex0(ExifTemp((Offset + 2) + ((i - 1) * 12) + 0)) &amp; Hex0(ExifTemp((Offset + 2) + ((i - 1) * 12) + 1))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Data_Format) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 2), ExifTemp((Offset + 2) + ((i - 1) * 12) + 3))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Components) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 4), ExifTemp((Offset + 2) + ((i - 1) * 12) + 5), ExifTemp((Offset + 2) + ((i - 1) * 12) + 6), ExifTemp((Offset + 2) + ((i - 1) * 12) + 7))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Sel&#101;ct Case IFDDirectory(k)(IFD_IDX_Data_Format)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case m_BYTE, m_SBYTE<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BytesPerComponent = 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent &lt;= 4 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToByte((Offset + 2) + ((i - 1) * 12) + 8, (Offset + 2) + ((i - 1) * 12) + 8 + IFDDirectory(k)(IFD_IDX_Components) - 1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = &#34;00&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case m_STRING, m_UNDEFINED<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BytesPerComponent = 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent &lt;= 4 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToStr((Offset + 2) + ((i - 1) * 12) + 8, (Offset + 2) + ((i - 1) * 12) + 8 + IFDDirectory(k)(IFD_IDX_Components) - 1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToStr(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = &#34;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case m_SHORT, m_SSHORT<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BytesPerComponent = 2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent &lt;= 4 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Sel&#101;ct Case IFDDirectory(k)(IFD_IDX_Components)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case 2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9)) + ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End Sel&#101;ct<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1, Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case m_LONG, m_SLONG<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BytesPerComponent = 4<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent &lt;= 4 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1, Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case m_RATIONAL, m_SRATIONAL<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BytesPerComponent = 8<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Sel&#101;ct Case IFDDirectory(k)(IFD_IDX_Components)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 0), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 1), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 2), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 3)) &amp; &#34;/&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 4), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 5), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 6), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 7))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = &#34;0/0&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case 3 &#39;GPS<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) &lt; UBound(ExifTemp) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 0), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 1), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 2), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 3)) &amp; &#34;/&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 4), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 5), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 6), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 7)) &amp; &#34;,&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 8), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 9), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 10), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 11)) &amp; &#34;/&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 12), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 13), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 14), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 15)) &amp; &#34;,&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 16), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 17), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 18), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 19)) &amp; &#34;/&#34; &amp; ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 20), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 21), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 22), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 23))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Value) = &#34;0/0,0/0,0/0&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End Sel&#101;ct<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End Sel&#101;ct<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(k)(IFD_IDX_Tag_No) = MakerNote Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Offset_to_MakerNote = IFDDirectory(k)(IFD_IDX_OffsetToValue)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;ExifIFD,GPSIFD&#x89E3;&#x6790;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(k)(IFD_IDX_Tag_No) = ExifOffset o&#114; IFDDirectory(k)(IFD_IDX_Tag_No) = GPSOffset Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Offset_to_ExifSubIFD = CLng(IFDDirectory(k)(IFD_IDX_Value))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetDirectoryEntries Offset_to_TIFF + Offset_to_ExifSubIFD<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(k)(IFD_IDX_Tag_Name) = LookupExifTag(IFDDirectory(k)(IFD_IDX_Tag_No))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br/>&#160;&#160;&#160;&#160;End Sub<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Private Function Hex0(nValue)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Hex0 = Right(&#34;00&#34; &amp; Hex(nValue), 2)<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Private Function ByteToInt(Byte1, Byte2)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Byte1 &lt; 128 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToInt = Byte1 * 256 + Byte2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToInt = Byte2 - (256 - Byte1) * 256<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Private Function ByteToLong(Byte1, Byte2, Byte3, Byte4)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Byte1 &lt; 128 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToLong = ((Byte1 * 256 + Byte2) * 256 + Byte3) * 256 + Byte4<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToLong = Byte4 - (((256 - Byte1) * 256 - Byte2) * 256 - Byte3) * 256<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;Private Function ByteToStr(StartOffset, EndOffset)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim i<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToStr = &#34;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If StartOffset &gt; EndOffset Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For i = StartOffset To EndOffset Step -1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ExifTemp(i) = 0 Then Exit For<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If i &gt; EndOffset Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ExifTemp(i) &gt;= 128 and ExifTemp(i - 1) &gt;= 128 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToStr = ByteToStr &amp; Chr(ByteToInt(ExifTemp(i), ExifTemp(StartOffset + i - 1)))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;i = i - 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToStr = ByteToStr &amp; Chr(ExifTemp(i))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToStr = ByteToStr &amp; Chr(ExifTemp(i))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For i = StartOffset To EndOffset<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ExifTemp(i) = 0 Then Exit For<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If i &lt; EndOffset Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ExifTemp(i) &gt;= 128 and ExifTemp(i + 1) &gt;= 128 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToStr = ByteToStr &amp; Chr(ByteToInt(ExifTemp(i), ExifTemp(i + 1)))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;i = i + 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToStr = ByteToStr &amp; Chr(ExifTemp(i))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToStr = ByteToStr &amp; Chr(ExifTemp(i))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Private Function ByteToByte(StartOffset, EndOffset)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim i<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToByte = &#34;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If StartOffset &gt; EndOffset Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For i = StartOffset To EndOffset Step -1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ByteToByte &lt;&gt; &#34;&#34; Then ByteToByte = ByteToByte &amp; &#34; &#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToByte = ByteToByte &amp; Hex0(ExifTemp(i))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For i = StartOffset To EndOffset<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If ByteToByte &lt;&gt; &#34;&#34; Then ByteToByte = ByteToByte &amp; &#34; &#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ByteToByte = ByteToByte &amp; Hex0(ExifTemp(i))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;Private Function MakeSenseOfMeaninglessValues()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim x<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim TagValues<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;For x = 0 To ubound(IFDDirectory) - 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Sel&#101;ct Case IFDDirectory(x)(IFD_IDX_Tag_Name)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case &#34;Orientation&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TagValues = array(&#34;&#x672A;&#x77E5;&#34;,&#34;&#x4E0A;&#x5DE6;&#34;,&#34;&#x4E0A;&#x53F3;&#34;, &#34;&#x4E0B;&#x53F3;&#34;, &#34;&#x4E0B;&#x5DE6;&#34;, &#34;&#x5DE6;&#x4E0A;&#34;, &#34;&#x53F3;&#x4E0A;&#34;, &#34;&#x53F3;&#x4E0B;&#34;, &#34;&#x5DE6;&#x4E0B;&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(x)(IFD_IDX_Value)&gt;=0 and IFDDirectory(x)(IFD_IDX_Value)&lt;ubound(TagValues) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = TagValues(IFDDirectory(x)(IFD_IDX_Value))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;&#x672A;&#x77E5;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case &#34;Metering Mode&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TagValues = array(&#34;&#x672A;&#x77E5;&#34;,&#34;&#x5E73;&#x5747;&#34;,&#34;&#x504F;&#x4E2D;&#x5FC3;&#x5E73;&#x5747;&#34;, &#34;&#x70B9;&#34;, &#34;&#x591A;&#x70B9;&#34;, &#34;&#x56FE;&#x6848;&#34;, &#34;&#x90E8;&#x5206;&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IFDDirectory(x)(IFD_IDX_Value)&gt;=0 and IFDDirectory(x)(IFD_IDX_Value)&lt;ubound(TagValues) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = TagValues(IFDDirectory(x)(IFD_IDX_Value))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;&#x672A;&#x77E5;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case &#34;FStop&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TagValues = Split(IFDDirectory(x)(IFD_IDX_Value), &#34;/&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If UBound(TagValues) = 1 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If CLng(TagValues(1))&lt;&gt;0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (CLng(TagValues(0)) Mod CLng(TagValues(1))) = 0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;F/&#34; &amp; (CLng(TagValues(0)) \ CLng(TagValues(1)))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;F/&#34; &amp; Round(CLng(TagValues(0)) / CLng(TagValues(1)),1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case &#34;Exposure Time&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TagValues = Split(IFDDirectory(x)(IFD_IDX_Value), &#34;/&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If UBound(TagValues) = 1 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If CLng(TagValues(1))&lt;&gt;0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If CLng(TagValues(1)) &gt; CLng(TagValues(0)) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (CLng(TagValues(1)) Mod CLng(TagValues(0))) = 0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;1/&#34; &amp; (CLng(TagValues(1)) \ CLng(TagValues(0))) &amp; &#34; &#x79D2;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;1/&#34; &amp; Round(CLng(TagValues(1)) / CLng(TagValues(0)),1) &amp; &#34; &#x79D2;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (CLng(TagValues(0)) Mod CLng(TagValues(1))) = 0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = CLng(TagValues(0)) \ CLng(TagValues(1)) &amp; &#34; &#x79D2;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = Round(CLng(TagValues(0)) / CLng(TagValues(1)),1) &amp; &#34; &#x79D2;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case &#34;Flash&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (IFDDirectory(x)(IFD_IDX_Value) Mod 2) = 0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;&#x5173;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;&#x5F00;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TagValues = IFDDirectory(x)(IFD_IDX_Value) \ 2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (TagValues Mod 4) = 2 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34;[&#x65E0;&#x9009;&#x901A;&#x8FD4;&#x56DE;]&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ElseIf (TagValues Mod 4) = 3 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34;[&#x5E26;&#x9009;&#x901A;&#x8FD4;&#x56DE;]&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TagValues = TagValues \ 4<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (TagValues Mod 4) = 1 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34;[&#x5F3A;&#x5236;&#x95EA;&#x5149;]&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ElseIf (TagValues Mod 4) = 2 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34;[&#x5F3A;&#x5236;&#x5173;&#x95ED;]&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ElseIf (TagValues Mod 4) = 3 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34;[&#x81EA;&#x52A8;&#x95EA;&#x5149;]&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TagValues = TagValues \ 4<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (TagValues Mod 2) = 1 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34;[&#x65E0;&#x95EA;&#x5149;&#x706F;]&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TagValues = TagValues \ 2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (TagValues Mod 2) = 1 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34;[&#x53BB;&#x7EA2;&#x773C;]&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case &#34;Exposure Bias Value&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TagValues = Split(IFDDirectory(x)(IFD_IDX_Value),&#34;/&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If UBound(TagValues) = 1 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If CLng(TagValues(1))&lt;&gt;0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If CLng(TagValues(0)) &gt; 0 Then <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;+ &#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ElseIf CLng(TagValues(0)) = 0 then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;0&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = &#34;- &#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If TagValues(0)&lt;&gt;0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If CLng(Abs(TagValues(0))) &lt; CLng(Abs(TagValues(1))) And CLng(TagValues(0)) &lt;&gt; 0 Then IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34;0&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; Round(CLng(Abs(TagValues(0))) / CLng(Abs(TagValues(1))),1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34;EV&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End if<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case &#34;Focal Length&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;TagValues = Split(IFDDirectory(x)(IFD_IDX_Value),&#34;/&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If UBound(TagValues) = 1 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If CLng(TagValues(1))&lt;&gt;0 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = Round(CLng(TagValues(0)) / CLng(TagValues(1)),1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34; &#x6BEB;&#x7C73;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End Sel&#101;ct<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br/>&#160;&#160;&#160;&#160;End Function <br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Public Function ExifAllInfo()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=&#34;&lt;table border=1&gt;&lt;tr&gt;&lt;th nowrap&gt;#&lt;/td&gt;&lt;th nowrap&gt;Tag HEX&lt;/td&gt;&lt;th nowrap&gt;Tag Name&lt;/td&gt;&lt;th nowrap&gt;Format&lt;/td&gt;&lt;th nowrap&gt;Size&lt;/td&gt;&lt;th nowrap&gt;Offset&lt;/td&gt;&lt;th nowrap&gt;Value&lt;/td&gt;&lt;th nowrap&gt;Value Described&lt;/td&gt;&lt;/tr&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dim x<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for x = 0 to ubound(IFDDirectory) - 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=ExifAllInfo&amp; &#34;&lt;tr&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=ExifAllInfo&amp; &#34;&lt;td&gt;&#34; &amp; x &amp; &#34;&lt;/td&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=ExifAllInfo&amp; &#34;&lt;td&gt;&#34; &amp; IFDDirectory(x)(IFD_IDX_Tag_No) &amp; &#34;&lt;/td&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=ExifAllInfo&amp; &#34;&lt;td&gt;&#34; &amp; IFDDirectory(x)(IFD_IDX_Tag_Name) &amp; &#34;&lt;/td&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=ExifAllInfo&amp; &#34;&lt;td&gt;&#34; &amp; IFDDirectory(x)(IFD_IDX_Data_Format) &amp; &#34;&lt;/td&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=ExifAllInfo&amp; &#34;&lt;td&gt;&#34; &amp; IFDDirectory(x)(IFD_IDX_Components) &amp; &#34;&lt;/td&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=ExifAllInfo&amp; &#34;&lt;td&gt;&#34; &amp; IFDDirectory(x)(IFD_IDX_OffsetToValue) &amp; &#34;&lt;/td&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=ExifAllInfo&amp; &#34;&lt;td&gt;&#34; &amp; IFDDirectory(x)(IFD_IDX_Value) &amp; &#34;&lt;/td&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=ExifAllInfo&amp; &#34;&lt;td&gt;&#34; &amp; IFDDirectory(x)(IFD_IDX_Value_Desc) &amp; &#34;&lt;/td&gt;&lt;/tr&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;next<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo=ExifAllInfo&amp; &#34;&lt;/table&gt;&#34;<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;Public Function ExifAllInfo2()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo2=&#34;&lt;BR&gt;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dim x<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for x = 0 to ubound(ExifTemp)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExifAllInfo2=ExifAllInfo2&amp; ExifTemp(x)&amp;&#34; &#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;next<br/>&#160;&#160;&#160;&#160;End Function<br/>End Class<br/>%&gt;<br/>&#x8C03;&#x7528;&#x793A;&#x4F8B;&#xFF1A;<br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;&lt;!--#include file=&#34;Exif.asp&#34; --&gt;<br/>&lt;%<br/>Set Obj = new Cls_Exif<br/>Obj.ImageFile = Server.MapPath(&#34;pic/test.jpg&#34;)<br/>Response.Write(Obj.GetExifByName(&#34;GPSLatitude&#34;))<br/>Response.Write(Obj.ExifAllInfo())<br/>%&gt;<br/>&#x672C;&#x7C7B;&#x6E90;&#x4EE3;&#x7801;&#x4ECE;&#x7F51;&#x4E0A;&#x4E0B;&#x8F7D;&#x800C;&#x6765;[&#x4E0B;&#x8F7D;&#x539F;&#x6587;&#x4EF6;]&#xFF0C;&#x539F;&#x5148;&#x53EA;&#x80FD;&#x83B7;&#x53D6;IFD0&#x3001;ExifIFD&#x548C;&#x4E24;&#x5757;&#x4FE1;&#x606F;&#xFF0C;&#x7ECF;&#x4FEE;&#x6539;&#x540E;&#x589E;&#x52A0;&#x4E86;GSIFD&#x4FE1;&#x606F;&#x8BFB;&#x53D6;&#x3002;</p><p> + <a href="#CommentCard">&#x67E5;&#x770B;&#x5F53;&#x524D;&#x65E5;&#x5FD7;&#x8BC4;&#x8BBA;</a> (0)</p><p>&nbsp;<br/><br/><a href="wap.asp?do=Login">&#x767B;&#x5F55;</a></p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.768&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card><card id="postCommentCard"><p><b>&#x6807;&#x9898;&#x3A;</b> <a href="#MainCard">&#x41;&#x53;&#x50;&#x8BFB;&#x53D6;&#x4A;&#x50;&#x47;&#x56FE;&#x50CF;&#x45;&#x78;&#x69;&#x66;&#x4FE1;&#x606F;&#x7C7B;</a></p><p><br/>你没有权限发表评论</p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.768&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card><card id="CommentCard"><p>&#x6682;&#x65E0;&#x8BC4;&#x8BBA;</p><p><a href="#MainCard">&#x8FD4;&#x56DE;</a></p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.768&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card>
</wml>
