1 | <?php |
---|
2 | |
---|
3 | /****************************************************************************** |
---|
4 | * |
---|
5 | * Filename: konica_minolta.php |
---|
6 | * |
---|
7 | * Description: Konica/Minolta Makernote Parser |
---|
8 | * Provides functions to decode an Konica/Minolta EXIF makernote and |
---|
9 | * to interpret the resulting array into html. |
---|
10 | * |
---|
11 | * Konica/Minolta Makernote Formats: |
---|
12 | * |
---|
13 | * Type 1: |
---|
14 | * |
---|
15 | * Field Size Description |
---|
16 | * ---------------------------------------------------------------- |
---|
17 | * Header 3 Bytes "MLY" |
---|
18 | * Unknown Data Variable Unknown Data |
---|
19 | * ---------------------------------------------------------------- |
---|
20 | * |
---|
21 | * Type 2: |
---|
22 | * |
---|
23 | * Field Size Description |
---|
24 | * ---------------------------------------------------------------- |
---|
25 | * Header 2 Bytes "KC" |
---|
26 | * Unknown Data Variable Unknown Data |
---|
27 | * ---------------------------------------------------------------- |
---|
28 | * |
---|
29 | * Type 3: |
---|
30 | * |
---|
31 | * Field Size Description |
---|
32 | * ---------------------------------------------------------------- |
---|
33 | * Header 8 Bytes "+M+M+M+M" |
---|
34 | * Unknown Data Variable Unknown Data |
---|
35 | * ---------------------------------------------------------------- |
---|
36 | * |
---|
37 | * Type 4: |
---|
38 | * |
---|
39 | * Field Size Description |
---|
40 | * ---------------------------------------------------------------- |
---|
41 | * Header 5 Bytes "MINOL" |
---|
42 | * Unknown Data Variable Unknown Data |
---|
43 | * ---------------------------------------------------------------- |
---|
44 | * |
---|
45 | * Type 5: NO HEADER |
---|
46 | * |
---|
47 | * Field Size Description |
---|
48 | * ---------------------------------------------------------------- |
---|
49 | * IFD Data Variable Standard IFD with Olympus Tags |
---|
50 | * ---------------------------------------------------------------- |
---|
51 | * |
---|
52 | * |
---|
53 | * Author: Evan Hunter |
---|
54 | * |
---|
55 | * Date: 30/7/2004 |
---|
56 | * |
---|
57 | * Project: JPEG Metadata |
---|
58 | * |
---|
59 | * Revision: 1.00 |
---|
60 | * |
---|
61 | * URL: http://electronics.ozhiker.com |
---|
62 | * |
---|
63 | * Copyright: Copyright " . $auteur . " 2004 |
---|
64 | * This file may be used freely for non-commercial purposes.For |
---|
65 | * commercial uses please contact the author: evan@ozhiker.com |
---|
66 | * |
---|
67 | ******************************************************************************/ |
---|
68 | |
---|
69 | // Konica/Minolta makernote uses Olympus tags - ensure they are included |
---|
70 | |
---|
71 | include_once 'olympus.php'; |
---|
72 | |
---|
73 | |
---|
74 | // Add the parser functions to the list of Makernote parsers . (Interpreting done by Olympus script) |
---|
75 | |
---|
76 | $GLOBALS['Makernote_Function_Array']['Read_Makernote_Tag'][] = "get_Minolta_Makernote"; |
---|
77 | $GLOBALS['Makernote_Function_Array']['get_Makernote_Text_Value'][] = "get_Minolta_Text_Value"; |
---|
78 | |
---|
79 | |
---|
80 | |
---|
81 | /****************************************************************************** |
---|
82 | * |
---|
83 | * Function: get_Minolta_Makernote |
---|
84 | * |
---|
85 | * Description: Decodes the Makernote tag and returns the new tag with the decoded |
---|
86 | * information attached. Returns false if this is not a makernote |
---|
87 | * that can be processed with this script |
---|
88 | * |
---|
89 | * Parameters: Makernote_Tag - the element of an EXIF array containing the |
---|
90 | * makernote, as returned from get_EXIF_JPEG |
---|
91 | * EXIF_Array - the entire EXIF array containing the |
---|
92 | * makernote, as returned from get_EXIF_JPEG, in |
---|
93 | * case more information is required for decoding |
---|
94 | * filehnd - an open file handle for the file containing the |
---|
95 | * makernote - does not have to be positioned at the |
---|
96 | * start of the makernote |
---|
97 | * Make_Field - The contents of the EXIF Make field, to aid |
---|
98 | * determining whether this script can decode |
---|
99 | * the makernote |
---|
100 | * |
---|
101 | * |
---|
102 | * Returns: Makernote_Tag - the Makernote_Tag from the parameters, but |
---|
103 | * modified to contain the decoded information |
---|
104 | * FALSE - If this script could not decode the makernote, or if |
---|
105 | * an error occured in decoding |
---|
106 | * |
---|
107 | ******************************************************************************/ |
---|
108 | |
---|
109 | function get_Minolta_Makernote( $Makernote_Tag, $EXIF_Array, $filehnd, $Make_Field ) |
---|
110 | { |
---|
111 | |
---|
112 | if ( ( stristr( $Make_Field, "Konica" ) === FALSE ) && |
---|
113 | ( stristr( $Make_Field, "Minolta" ) === FALSE ) ) |
---|
114 | { |
---|
115 | // Not a Konica/Minolta Makernote - Cannot decode it |
---|
116 | return False; |
---|
117 | } |
---|
118 | |
---|
119 | // There are several different headers for a Konica/Minolta Makernote |
---|
120 | // Unfortunately only one type can be decoded (the one without a header) |
---|
121 | // Check which header exists (if any) |
---|
122 | if ( substr( $Makernote_Tag['Data'], 0, 3 ) == "MLY" ) |
---|
123 | { |
---|
124 | // MLY Header - Can't Decode this |
---|
125 | return $Makernote_Tag; |
---|
126 | } |
---|
127 | else if ( substr( $Makernote_Tag['Data'], 0, 2 ) == "KC" ) |
---|
128 | { |
---|
129 | // KC Header - Can't Decode this |
---|
130 | return $Makernote_Tag; |
---|
131 | } |
---|
132 | if ( substr( $Makernote_Tag['Data'], 0, 8 ) == "+M+M+M+M" ) |
---|
133 | { |
---|
134 | // +M+M+M+M Header - Can't Decode this |
---|
135 | return $Makernote_Tag; |
---|
136 | } |
---|
137 | else if ( substr( $Makernote_Tag['Data'], 0, 5 ) == "MINOL" ) |
---|
138 | { |
---|
139 | // MINOL Header - Can't Decode this |
---|
140 | return $Makernote_Tag; |
---|
141 | } |
---|
142 | else |
---|
143 | { |
---|
144 | // No Header - Decode the IFD |
---|
145 | |
---|
146 | // Seek to the start of the IFD |
---|
147 | fseek($filehnd, $Makernote_Tag['Tiff Offset'] + $Makernote_Tag['Offset'] ); |
---|
148 | |
---|
149 | // Read the IFD(s) into an array |
---|
150 | $Makernote_Tag['Decoded Data'] = read_Multiple_IFDs( $filehnd, $Makernote_Tag['Tiff Offset'], $Makernote_Tag['ByteAlign'], "Olympus" ); |
---|
151 | |
---|
152 | // Save some information into the Tag element to aid interpretation |
---|
153 | $Makernote_Tag['Decoded'] = TRUE; |
---|
154 | $Makernote_Tag['Makernote Type'] = "Minolta"; |
---|
155 | $Makernote_Tag['Makernote Tags'] = "Olympus"; |
---|
156 | |
---|
157 | |
---|
158 | // Return the new tag |
---|
159 | return $Makernote_Tag; |
---|
160 | |
---|
161 | } |
---|
162 | |
---|
163 | |
---|
164 | // Shouldn't get here |
---|
165 | return False; |
---|
166 | } |
---|
167 | |
---|
168 | /****************************************************************************** |
---|
169 | * End of Function: get_Minolta_Makernote |
---|
170 | ******************************************************************************/ |
---|
171 | |
---|
172 | |
---|
173 | |
---|
174 | |
---|
175 | |
---|
176 | |
---|
177 | |
---|
178 | /****************************************************************************** |
---|
179 | * |
---|
180 | * Function: get_Minolta_Text_Value |
---|
181 | * |
---|
182 | * Description: Provides a text value for any tag marked as special for makernotes |
---|
183 | * that this script can decode. Returns false if this is not a makernote |
---|
184 | * that can be processed with this script |
---|
185 | * |
---|
186 | * Parameters: Exif_Tag - the element of an the Makernote array containing the |
---|
187 | * tag in question, as returned from get_Olympus_Makernote |
---|
188 | * Tag_Definitions_Name - The name of the Tag Definitions group |
---|
189 | * within the global array IFD_Tag_Definitions |
---|
190 | * |
---|
191 | * |
---|
192 | * Returns: output - the text value for the tag |
---|
193 | * FALSE - If this script could not decode the makernote, or if |
---|
194 | * an error occured in decoding |
---|
195 | * |
---|
196 | ******************************************************************************/ |
---|
197 | |
---|
198 | function get_Minolta_Text_Value( $Exif_Tag, $Tag_Definitions_Name ) |
---|
199 | { |
---|
200 | // Check that this Tag uses Olympus type tags - otherwise it cannot be processed here |
---|
201 | if ( $Tag_Definitions_Name !== "Olympus" ) |
---|
202 | { |
---|
203 | // Not Olympus Tags - cannot be processed here |
---|
204 | return FALSE; |
---|
205 | } |
---|
206 | |
---|
207 | |
---|
208 | // Process the tag acording to it's tag number, to produce a text value |
---|
209 | |
---|
210 | if ( ( $Exif_Tag['Tag Number'] == 0x0001 ) || // Minolta Camera Settings |
---|
211 | ( $Exif_Tag['Tag Number'] == 0x0003 ) ) |
---|
212 | { |
---|
213 | |
---|
214 | // Create the output string |
---|
215 | $output_str = ""; |
---|
216 | |
---|
217 | // Cycle through each camera setting record which are 4 byte Longs |
---|
218 | |
---|
219 | for ( $i = 1; $i*4 <= strlen( $Exif_Tag['Data'] ); $i++) |
---|
220 | { |
---|
221 | |
---|
222 | // Exract the current 4 byte Long value (Motorola byte alignment) |
---|
223 | $value = get_IFD_Data_Type( substr($Exif_Tag['Data'], ($i-1)*4, 4) , 4, "MM" ); |
---|
224 | |
---|
225 | // Corrupt settings can cause huge values, which automatically get |
---|
226 | // put into floating point variables instead of integer variables |
---|
227 | // Hence Check that this is an integer, as problems will occur if it isn't |
---|
228 | if ( is_integer( $value ) ) |
---|
229 | { |
---|
230 | |
---|
231 | // Check if the current setting number is in the Definitions array |
---|
232 | if ( array_key_exists( $i, ($GLOBALS[ "Minolta_Camera_Setting_Definitions" ]) ) === TRUE ) |
---|
233 | { |
---|
234 | // Setting is in definitions array |
---|
235 | |
---|
236 | // Get some of the information from the settings definitions array |
---|
237 | $tagname = $GLOBALS[ "Minolta_Camera_Setting_Definitions" ][ $i ][ 'Name' ]; |
---|
238 | $units = ""; |
---|
239 | if ( array_key_exists( 'Units', $GLOBALS[ "Minolta_Camera_Setting_Definitions" ][ $i ] ) ) |
---|
240 | { |
---|
241 | $units = $GLOBALS[ "Minolta_Camera_Setting_Definitions" ][ $i ][ 'Units' ]; |
---|
242 | } |
---|
243 | // Check what type of field the setting is, and process accordingly |
---|
244 | |
---|
245 | if ( $GLOBALS[ "Minolta_Camera_Setting_Definitions" ][ $i ]['Type'] == "Lookup" ) |
---|
246 | { |
---|
247 | // This is a lookup table field |
---|
248 | |
---|
249 | // Check if the value read is in the lookup table |
---|
250 | if ( array_key_exists( $value, $GLOBALS[ "Minolta_Camera_Setting_Definitions" ][ $i ] ) ) |
---|
251 | { |
---|
252 | // Value is in the lookup table - Add it to the text |
---|
253 | $output_str .= $tagname . ": " . $GLOBALS[ "Minolta_Camera_Setting_Definitions" ][ $i ][ $value ] . "\n"; |
---|
254 | } |
---|
255 | else |
---|
256 | { |
---|
257 | // Value is Not in the lookup table |
---|
258 | // Add a message if the user has requested to see unknown tags |
---|
259 | if ( $GLOBALS['HIDE_UNKNOWN_TAGS'] == FALSE ) |
---|
260 | { |
---|
261 | $output_str .= $tagname . ": Unknown Reserved Value $value\n"; |
---|
262 | } |
---|
263 | |
---|
264 | } |
---|
265 | } |
---|
266 | else if ( $GLOBALS[ "Minolta_Camera_Setting_Definitions" ][ $i ]['Type'] == "Numeric" ) |
---|
267 | { |
---|
268 | // This is a numeric type add it as is to the output, with units |
---|
269 | $output_str .= $tagname . ": $value $units\n"; |
---|
270 | } |
---|
271 | else if ( $GLOBALS[ "Minolta_Camera_Setting_Definitions" ][ $i ]['Type'] == "Special" ) |
---|
272 | { |
---|
273 | // This is a special setting, Process it according to the setting number |
---|
274 | switch ( $i ) |
---|
275 | { |
---|
276 | case 9: // Apex Film Speed Value |
---|
277 | $output_str .= $tagname . ": " . ($value/8-1) . " ( ISO " . ((pow(2,($value/8-1)))*3.125) . " )\n"; |
---|
278 | break; |
---|
279 | |
---|
280 | case 10: // Apex Shutter Speed Time Value |
---|
281 | $output_str .= $tagname . ": " . ($value/8-6); |
---|
282 | if ( $value == 8 ) |
---|
283 | { |
---|
284 | $output_str .= " ( 30 seconds )\n"; |
---|
285 | } |
---|
286 | else |
---|
287 | { |
---|
288 | $output_str .= " ( " . ( pow(2, (48-$value)/8 ) ) . " seconds )\n"; |
---|
289 | } |
---|
290 | break; |
---|
291 | |
---|
292 | case 11: // Apex Aperture Value |
---|
293 | $output_str .= $tagname . ": " . ($value/8-1) . " ( F Stop: " . (pow(2,( $value/16-0.5 ))) . " )\n"; |
---|
294 | break; |
---|
295 | |
---|
296 | case 14: // Exposure Compensation |
---|
297 | $output_str .= $tagname . ": " . ($value/3-2) . " $units\n"; |
---|
298 | break; |
---|
299 | |
---|
300 | case 17: // Interval Length |
---|
301 | $output_str .= $tagname . ": " . ($value+1) . " $units\n"; |
---|
302 | break; |
---|
303 | |
---|
304 | case 19: // Focal Length |
---|
305 | $output_str .= $tagname . ": " . ($value/256) . " $units\n"; |
---|
306 | break; |
---|
307 | |
---|
308 | case 22: // Date |
---|
309 | $output_str .= $tagname . ": " . sprintf( "%d/%d/%d", ($value%256), floor(($value - floor($value/65536)*65536)/256 ), floor($value/65536) ) . " $units\n"; |
---|
310 | break; |
---|
311 | |
---|
312 | case 23: // Time |
---|
313 | $output_str .= $tagname . ": " . sprintf( "%2d:%02d:%02d", floor($value/65536), floor(($value - floor($value/65536)*65536)/256 ), ($value%256) ) . " $units\n"; |
---|
314 | break; |
---|
315 | |
---|
316 | case 24: // Max Aperture at this focal length |
---|
317 | $output_str .= $tagname . ": F" . (pow(2,($value/16-0.5))) ." $units\n"; |
---|
318 | break; |
---|
319 | |
---|
320 | case 29: // White Balance Red |
---|
321 | case 30: // White Balance Green |
---|
322 | case 31: // White Balance Blue |
---|
323 | $output_str .= $tagname . ": " . ($value/256) ." $units\n"; |
---|
324 | break; |
---|
325 | |
---|
326 | case 32: // Saturation |
---|
327 | case 33: // Contrast |
---|
328 | $output_str .= $tagname . ": " . ($value-3) ." $units\n"; |
---|
329 | break; |
---|
330 | |
---|
331 | case 36: // Flash Compensation |
---|
332 | $output_str .= $tagname . ": " . (($value-6)/3) ." $units\n"; |
---|
333 | break; |
---|
334 | |
---|
335 | case 42: // Color Filter |
---|
336 | $output_str .= $tagname . ": " . ($value-3) ." $units\n"; |
---|
337 | break; |
---|
338 | |
---|
339 | case 45: // Apex Brightness Value |
---|
340 | $output_str .= $tagname . ": " . ($value/8-6) ." $units\n"; |
---|
341 | break; |
---|
342 | |
---|
343 | default: // Unknown Special Setting |
---|
344 | // If user has requested to see the unknown tags, then add the setting to the output |
---|
345 | if ( $GLOBALS['HIDE_UNKNOWN_TAGS'] == FALSE ) |
---|
346 | { |
---|
347 | $output_str .= "Unknown Special Tag: $tagname, Value: $value $units\n"; |
---|
348 | } |
---|
349 | break; |
---|
350 | } |
---|
351 | } |
---|
352 | else |
---|
353 | { |
---|
354 | // Unknown Setting Type |
---|
355 | // If user has requested to see the unknown tags, then add the setting to the output |
---|
356 | if ( $GLOBALS['HIDE_UNKNOWN_TAGS'] == FALSE ) |
---|
357 | { |
---|
358 | $output_str .= "Unknown Tag Type Tag $i, Value: " . $value . "\n"; |
---|
359 | } |
---|
360 | } |
---|
361 | |
---|
362 | |
---|
363 | } |
---|
364 | else |
---|
365 | { |
---|
366 | // Unknown Setting |
---|
367 | // If user has requested to see the unknown tags, then add the setting to the output |
---|
368 | if ( $GLOBALS['HIDE_UNKNOWN_TAGS'] == FALSE ) |
---|
369 | { |
---|
370 | $output_str .= "Unknown Minolta Camera Setting Tag $i, Value: " . $value . "\n"; |
---|
371 | } |
---|
372 | } |
---|
373 | } |
---|
374 | |
---|
375 | } |
---|
376 | |
---|
377 | // Return the text string |
---|
378 | return $output_str; |
---|
379 | } |
---|
380 | else if ( ( $Exif_Tag['Tag Number'] == 0x0088 ) || |
---|
381 | ( $Exif_Tag['Tag Number'] == 0x0081 ) ) |
---|
382 | { |
---|
383 | // Konica/Minolta Thumbnail |
---|
384 | return "Thumbnail"; |
---|
385 | } |
---|
386 | else |
---|
387 | { |
---|
388 | return FALSE; |
---|
389 | } |
---|
390 | |
---|
391 | } |
---|
392 | |
---|
393 | /****************************************************************************** |
---|
394 | * End of Function: get_Minolta_Text_Value |
---|
395 | ******************************************************************************/ |
---|
396 | |
---|
397 | |
---|
398 | |
---|
399 | |
---|
400 | |
---|
401 | |
---|
402 | |
---|
403 | /****************************************************************************** |
---|
404 | * Global Variable: Minolta_Camera_Setting_Definitions |
---|
405 | * |
---|
406 | * Contents: This global variable provides definitions for the fields |
---|
407 | * contained in the Konica/Minolta Camera Settings Makernote tag, |
---|
408 | * indexed by their setting number. |
---|
409 | * |
---|
410 | ******************************************************************************/ |
---|
411 | |
---|
412 | $GLOBALS[ "Minolta_Camera_Setting_Definitions" ] = array( |
---|
413 | |
---|
414 | 2 => array ( 'Name' => "Exposure Mode", |
---|
415 | 'Type' => "Lookup", |
---|
416 | 0 => "P", |
---|
417 | 1 => "A", |
---|
418 | 2 => "S", |
---|
419 | 3 => "M" ), |
---|
420 | |
---|
421 | 3 => array ( 'Name' => "Flash Mode", |
---|
422 | 'Type' => "Lookup", |
---|
423 | 0 => "Normal", |
---|
424 | 1 => "Red-eye reduction", |
---|
425 | 2 => "Rear flash sync", |
---|
426 | 3 => "Wireless" ), |
---|
427 | |
---|
428 | 4 => array ( 'Name' => "White Balance", |
---|
429 | 'Type' => "Lookup", |
---|
430 | 0 => "Auto", |
---|
431 | 1 => "Daylight", |
---|
432 | 2 => "Cloudy", |
---|
433 | 3 => "Tungsten", |
---|
434 | 5 => "Custom", |
---|
435 | 7 => "Fluorescent", |
---|
436 | 8 => "Fluorescent 2", |
---|
437 | 11 => "Custom 2", |
---|
438 | 12 => "Custom 3" ), |
---|
439 | |
---|
440 | 5 => array ( 'Name' => "Image Size", |
---|
441 | 'Type' => "Lookup", |
---|
442 | 0 => "2560 x 1920 (2048x1536 - DiMAGE 5 only)", |
---|
443 | 1 => "1600 x 1200", |
---|
444 | 2 => "1280 x 960", |
---|
445 | 3 => "640 x 480" ), |
---|
446 | |
---|
447 | |
---|
448 | 6 => array ( 'Name' => "Image Quality", |
---|
449 | 'Type' => "Lookup", |
---|
450 | 0 => "Raw", |
---|
451 | 1 => "Super Fine", |
---|
452 | 2 => "Fine", |
---|
453 | 3 => "Standard", |
---|
454 | 4 => "Economy", |
---|
455 | 5 => "Extra Fine" ), |
---|
456 | |
---|
457 | 7 => array ( 'Name' => "Shooting Mode", |
---|
458 | 'Type' => "Lookup", |
---|
459 | 0 => "Single", |
---|
460 | 1 => "Continuous", |
---|
461 | 2 => "Self-timer", |
---|
462 | 4 => "Bracketing", |
---|
463 | 5 => "Interval", |
---|
464 | 6 => "UHS Continuous", |
---|
465 | 7 => "HS Continuous" ), |
---|
466 | |
---|
467 | |
---|
468 | 8 => array ( 'Name' => "Metering Mode", |
---|
469 | 'Type' => "Lookup", |
---|
470 | 0 => "Multi-Segment", |
---|
471 | 1 => "Centre Weighted", |
---|
472 | 2 => "Spot" ), |
---|
473 | |
---|
474 | |
---|
475 | 9 => array ( 'Name' => "Apex Film Speed Value", |
---|
476 | 'Type' => "Special" ), |
---|
477 | |
---|
478 | // 09 FilmSpeed , APEX Film Speed Value , Speed value = x/8-1 , ISO= (2^(x/8-1))*3.125 |
---|
479 | |
---|
480 | |
---|
481 | 10 => array ( 'Name' => "Apex Shutter Speed Time Value", |
---|
482 | 'Type' => "Special", |
---|
483 | 'Units' => "Seconds?" ), |
---|
484 | |
---|
485 | // APEX Time Value , Time value = x/8-6 , ShutterSpeed = 2^( (48-x)/8 ), ! Due to rounding error x=8 should be displayed as 30 sec. |
---|
486 | |
---|
487 | 11 => array ( 'Name' => "Apex Aperture Value", |
---|
488 | 'Type' => "Special" ), |
---|
489 | |
---|
490 | // APEX Aperture Value ApertureValue = x/8-1 , Aperture = 2^( x/16-0.5 ) |
---|
491 | |
---|
492 | |
---|
493 | 12 => array ( 'Name' => "Macro Mode", |
---|
494 | 'Type' => "Lookup", |
---|
495 | 0 => "Off", |
---|
496 | 1 => "On" ), |
---|
497 | |
---|
498 | 13 => array ( 'Name' => "Digital Zoom", |
---|
499 | 'Type' => "Lookup", |
---|
500 | 0 => "Off", |
---|
501 | 1 => "Electronic magnification was used", |
---|
502 | 2 => "Digital zoom 2x" ), |
---|
503 | |
---|
504 | |
---|
505 | 14 => array ( 'Name' => "Exposure Compensation", |
---|
506 | 'Type' => "Special", |
---|
507 | 'Units' => "EV" ), |
---|
508 | |
---|
509 | // EV = x/3 -2 Exposure compensation in EV |
---|
510 | |
---|
511 | |
---|
512 | 15 => array ( 'Name' => "Bracket Step", |
---|
513 | 'Type' => "Lookup", |
---|
514 | 0 => "1/3 EV", |
---|
515 | 1 => "2/3 EV", |
---|
516 | 2 => "1 EV" ), |
---|
517 | |
---|
518 | |
---|
519 | 17 => array ( 'Name' => "Interval Length", |
---|
520 | 'Type' => "Special", |
---|
521 | 'Units' => "Min" ), |
---|
522 | |
---|
523 | // interval is x+1 min (used with interval mode) |
---|
524 | |
---|
525 | |
---|
526 | 18 => array ( 'Name' => "Interval Number", |
---|
527 | 'Type' => "Numeric", |
---|
528 | 'Units' => "frames" ), |
---|
529 | |
---|
530 | 19 => array ( 'Name' => "Focal Length", |
---|
531 | 'Type' => "Special", |
---|
532 | 'Units' => "mm" ), |
---|
533 | |
---|
534 | // x / 256 is real focal length in mm , x / 256 * 3.9333 is 35-mm equivalent |
---|
535 | |
---|
536 | |
---|
537 | 20 => array ( 'Name' => "Focus Distance", |
---|
538 | 'Type' => "Numeric", |
---|
539 | 'Units' => "mm ( 0 = Infinity)" ), |
---|
540 | |
---|
541 | |
---|
542 | 21 => array ( 'Name' => "Flash Fired", |
---|
543 | 'Type' => "Lookup", |
---|
544 | 0 => "No", |
---|
545 | 1 => "Yes" ), |
---|
546 | |
---|
547 | 22 => array ( 'Name' => "Date", |
---|
548 | 'Type' => "Special" ), |
---|
549 | |
---|
550 | // yyyymmdd , year = x/65536 , month = x/256-x/65536*256 , day = x%256 |
---|
551 | |
---|
552 | 23 => array ( 'Name' => "Time", |
---|
553 | 'Type' => "Special" ), |
---|
554 | |
---|
555 | // hhhhmmss , hour = x/65536 , minute = x/256-x/65536*256 , second = x%256 |
---|
556 | |
---|
557 | |
---|
558 | 24 => array ( 'Name' => "Max Aperture at this focal length", |
---|
559 | 'Type' => "Special" ), |
---|
560 | |
---|
561 | // Fno = 2^(x/16-0.5) |
---|
562 | |
---|
563 | |
---|
564 | 27 => array ( 'Name' => "File Number Memory", |
---|
565 | 'Type' => "Lookup", |
---|
566 | 0 => "Off", |
---|
567 | 1 => "On" ), |
---|
568 | |
---|
569 | 28 => array ( 'Name' => "Last File Number", |
---|
570 | 'Type' => "Numeric", |
---|
571 | 'Units' => " ( 0 = File Number Memory is Off)" ), |
---|
572 | |
---|
573 | |
---|
574 | 29 => array ( 'Name' => "White Balance Red", |
---|
575 | 'Type' => "Special" ), |
---|
576 | |
---|
577 | // x/256 - red white balance coefficient used for this picture |
---|
578 | |
---|
579 | |
---|
580 | 30 => array ( 'Name' => "White Balance Green", |
---|
581 | 'Type' => "Special" ), |
---|
582 | |
---|
583 | // x/256 - green white balance coefficient used for this picture |
---|
584 | |
---|
585 | 31 => array ( 'Name' => "White Balance Blue", |
---|
586 | 'Type' => "Special" ), |
---|
587 | |
---|
588 | // x/256 - blue white balance coefficient used for this picture |
---|
589 | |
---|
590 | |
---|
591 | 32 => array ( 'Name' => "Saturation", |
---|
592 | 'Type' => "Special" ), |
---|
593 | |
---|
594 | // x-3 = saturation |
---|
595 | |
---|
596 | |
---|
597 | 33 => array ( 'Name' => "Contrast", |
---|
598 | 'Type' => "Special" ), |
---|
599 | |
---|
600 | // x-3 - contrast |
---|
601 | |
---|
602 | |
---|
603 | 34 => array ( 'Name' => "Sharpness", |
---|
604 | 'Type' => "Lookup", |
---|
605 | 0 => "Hard", |
---|
606 | 1 => "Normal", |
---|
607 | 2 => "Soft" ), |
---|
608 | |
---|
609 | |
---|
610 | 35 => array ( 'Name' => "Subject Program", |
---|
611 | 'Type' => "Lookup", |
---|
612 | 0 => "none", |
---|
613 | 1 => "portrait", |
---|
614 | 2 => "text", |
---|
615 | 3 => "night portrait", |
---|
616 | 4 => "sunset", |
---|
617 | 5 => "sports action" ), |
---|
618 | |
---|
619 | |
---|
620 | 36 => array ( 'Name' => "Flash Compensation", |
---|
621 | 'Type' => "Special", |
---|
622 | 'Units' => "EV" ), |
---|
623 | |
---|
624 | // (x-6)/3 = flash compensation in EV |
---|
625 | |
---|
626 | |
---|
627 | 37 => array ( 'Name' => "ISO Setting", |
---|
628 | 'Type' => "Lookup", |
---|
629 | 0 => "100", |
---|
630 | 1 => "200", |
---|
631 | 2 => "400", |
---|
632 | 3 => "800", |
---|
633 | 4 => "auto", |
---|
634 | 5 => "64" ), |
---|
635 | |
---|
636 | |
---|
637 | 38 => array ( 'Name' => "Camera Model", |
---|
638 | 'Type' => "Lookup", |
---|
639 | 0 => "DiMAGE 7", |
---|
640 | 1 => "DiMAGE 5", |
---|
641 | 2 => "DiMAGE S304", |
---|
642 | 3 => "DiMAGE S404", |
---|
643 | 4 => "DiMAGE 7i", |
---|
644 | 5 => "DiMAGE 7Hi", |
---|
645 | 6 => "DiMAGE A1", |
---|
646 | 7 => "DiMAGE S414" ), |
---|
647 | |
---|
648 | |
---|
649 | 39 => array ( 'Name' => "Interval Mode", |
---|
650 | 'Type' => "Lookup", |
---|
651 | 0 => "Still Image", |
---|
652 | 1 => "Time-lapse Movie" ), |
---|
653 | |
---|
654 | |
---|
655 | 40 => array ( 'Name' => "Folder Name", |
---|
656 | 'Type' => "Lookup", |
---|
657 | 0 => "Standard Form", |
---|
658 | 1 => "Data Form" ), |
---|
659 | |
---|
660 | |
---|
661 | 41 => array ( 'Name' => "Color Mode", |
---|
662 | 'Type' => "Lookup", |
---|
663 | 0 => "Natural Color", |
---|
664 | 1 => "Black & White", |
---|
665 | 2 => "Vivid Color", |
---|
666 | 3 => "Solarization", |
---|
667 | 4 => "Adobe RGB" ), |
---|
668 | |
---|
669 | |
---|
670 | 42 => array ( 'Name' => "Color Filter", |
---|
671 | 'Type' => "Special" ), |
---|
672 | |
---|
673 | // x-3 = color filter |
---|
674 | |
---|
675 | |
---|
676 | 43 => array ( 'Name' => "Black & White Filter", |
---|
677 | 'Type' => "Numeric" ), |
---|
678 | |
---|
679 | |
---|
680 | |
---|
681 | 44 => array ( 'Name' => "Internal Flash", |
---|
682 | 'Type' => "Lookup", |
---|
683 | 0 => "Not Fired", |
---|
684 | 1 => "Fired" ), |
---|
685 | |
---|
686 | |
---|
687 | |
---|
688 | 45 => array ( 'Name' => "Apex Brightness Value", |
---|
689 | 'Type' => "Special" ), |
---|
690 | |
---|
691 | // Brightness Value = x/8-6 |
---|
692 | |
---|
693 | |
---|
694 | |
---|
695 | |
---|
696 | 46 => array ( 'Name' => "Spot Focus Point X Coordinate", |
---|
697 | 'Type' => "Numeric" ), |
---|
698 | |
---|
699 | |
---|
700 | |
---|
701 | 47 => array ( 'Name' => "Spot Focus Point Y Coordinate", |
---|
702 | 'Type' => "Numeric" ), |
---|
703 | |
---|
704 | |
---|
705 | |
---|
706 | 48 => array ( 'Name' => "Wide Focus Zone", |
---|
707 | 'Type' => "Lookup", |
---|
708 | 0 => "No Zone or AF Failed", |
---|
709 | 1 => "Center Zone (Horizontal Orientation)", |
---|
710 | 2 => "Center Zone (Vertical Orientation)", |
---|
711 | 3 => "Left Zone", |
---|
712 | 4 => "Right Zone" ), |
---|
713 | |
---|
714 | |
---|
715 | 49 => array ( 'Name' => "Focus Mode", |
---|
716 | 'Type' => "Lookup", |
---|
717 | 0 => "Auto Focus", |
---|
718 | 1 => "Manual Focus" ), |
---|
719 | |
---|
720 | |
---|
721 | 50 => array ( 'Name' => "Focus Area", |
---|
722 | 'Type' => "Lookup", |
---|
723 | 0 => "Wide Focus (normal)", |
---|
724 | 1 => "Spot Focus" ), |
---|
725 | |
---|
726 | |
---|
727 | 51 => array ( 'Name' => "DEC Switch Position", |
---|
728 | 'Type' => "Lookup", |
---|
729 | 0 => "Exposure", |
---|
730 | 1 => "Contrast", |
---|
731 | 2 => "Saturation", |
---|
732 | 3 => "Filter" ), |
---|
733 | |
---|
734 | |
---|
735 | |
---|
736 | ); |
---|
737 | |
---|
738 | /****************************************************************************** |
---|
739 | * End of Global Variable: Minolta_Camera_Setting_Definitions |
---|
740 | ******************************************************************************/ |
---|
741 | |
---|
742 | |
---|
743 | |
---|
744 | |
---|
745 | ?> |
---|