阅读EXIF并确定闪光灯是否已经触发

时间:2011-08-16 10:45:28

标签: php exif

我一直在用PHP脚本阅读一些EXIF数据。如果使用了闪光灯,我想确定某个图像。以下是EXIF阅读器返回的值

0x0     = No Flash
0x1     = Fired
0x5     = Fired, Return not detected
0x7     = Fired, Return detected
0x8     = On, Did not fire
0x9     = On, Fired
0xd     = On, Return not detected
0xf     = On, Return detected
0x10    = Off, Did not fire
0x14    = Off, Did not fire, Return not detected
0x18    = Auto, Did not fire
0x19    = Auto, Fired
0x1d    = Auto, Fired, Return not detected
0x1f    = Auto, Fired, Return detected
0x20    = No flash function
0x30    = Off, No flash function
0x41    = Fired, Red-eye reduction
0x45    = Fired, Red-eye reduction, Return not detected
0x47    = Fired, Red-eye reduction, Return detected
0x49    = On, Red-eye reduction
0x4d    = On, Red-eye reduction, Return not detected
0x4f    = On, Red-eye reduction, Return detected
0x50    = Off, Red-eye reduction
0x58    = Auto, Did not fire, Red-eye reduction
0x59    = Auto, Fired, Red-eye reduction
0x5d    = Auto, Fired, Red-eye reduction, Return not detected
0x5f    = Auto, Fired, Red-eye reduction, Return detected

其中哪一个意味着闪光灯已被使用?

祝你好运, Mladjo

3 个答案:

答案 0 :(得分:17)

flash属性实际上是以下标志的组合:

0:  FlashDidNotFire
1:  FlashFired
2:  StrobeReturnLightDetected
4:  StrobeReturnLightNotDetected
8:  CompulsoryFlashMode
16: AutoMode
32: NoFlashFunction
64: RedEyeReductionMode

检查闪光灯是否已按1

触发,按位和闪光属性
$flashfired = ($exifflashproperty & 1) != 0;

答案 1 :(得分:12)

我相信如果您将十六进制值转换为二进制,则最右边的数字表示闪存是否实际被触发。

因此:

+-------------------------------------------------------+------+----------+-------+
|                        Status                         | Hex  |  Binary  | Fired |
+-------------------------------------------------------+------+----------+-------+
| No Flash                                              | 0x0  | 00000000 | No    |
| Fired                                                 | 0x1  | 00000001 | Yes   |
| "Fired, Return not detected"                          | 0x5  | 00000101 | Yes   |
| "Fired, Return detected"                              | 0x7  | 00000111 | Yes   |
| "On, Did not fire"                                    | 0x8  | 00001000 | No    |
| "On, Fired"                                           | 0x9  | 00001001 | Yes   |
| "On, Return not detected"                             | 0xd  | 00001011 | Yes   |
| "On, Return detected"                                 | 0xf  | 00001111 | Yes   |
| "Off, Did not fire"                                   | 0x10 | 00010000 | No    |
| "Off, Did not fire, Return not detected"              | 0x14 | 00010100 | No    |
| "Auto, Did not fire"                                  | 0x18 | 00011000 | No    |
| "Auto, Fired"                                         | 0x19 | 00011001 | Yes   |
| "Auto, Fired, Return not detected"                    | 0x1d | 00011101 | Yes   |
| "Auto, Fired, Return detected"                        | 0x1f | 00011111 | Yes   |
|  No flash function                                    | 0x20 | 00100000 | No    |
| "Off, No flash function"                              | 0x30 | 00110000 | No    |
| "Fired, Red-eye reduction"                            | 0x41 | 01000001 | Yes   |
| "Fired, Red-eye reduction, Return not detected"       | 0x45 | 01000101 | Yes   |
| "Fired, Red-eye reduction, Return detected"           | 0x47 | 01000111 | Yes   |
| "On, Red-eye reduction"                               | 0x49 | 01001001 | Yes   |
| "On, Red-eye reduction, Return not detected"          | 0x4d | 01001101 | Yes   |
| "On, Red-eye reduction, Return detected"              | 0x4f | 01001111 | Yes   |
| "Off, Red-eye reduction"                              | 0x50 | 01010000 | No    |
| "Auto, Did not fire, Red-eye reduction"               | 0x58 | 01011000 | No    |
| "Auto, Fired, Red-eye reduction"                      | 0x59 | 01011001 | Yes   |
| "Auto, Fired, Red-eye reduction, Return not detected" | 0x5d | 01011101 | Yes   |
| "Auto, Fired, Red-eye reduction, Return detected"     | 0x5f | 01011111 | Yes   |
+-------------------------------------------------------+------+----------+-------+

答案 2 :(得分:0)

为简化起见,您可以按照以下步骤操作:奇数值表示闪光灯已闪光,而偶数值(包括零)表示闪光灯未闪光

您可以在Tiff Tag Reference上获取更多信息和每个值的含义。