2011-08-16 1 views
2

PHPスクリプトでEXIFデータを読んでいます。私はフラッシュが使用されている場合、特定の画像を決定したいと思います。 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

答えて

9

あなたはバイナリに六角値を変換する場合、私は信じているが、一番右の桁が、その後を示しています。したがって

+-------------------------------------------------------+------+----------+-------+ 
|      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 | 
+-------------------------------------------------------+------+----------+-------+ 
16

フラッシュプロパティは、実際には次のフラグの組み合わせです:

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

フラッシュは、ビット単位のAND 1とフラッシュプロパティ発射しているかどうかを確認するには:

$flashfired = ($exifflashproperty & 1) != 0; 
+0

完璧な回答! –

関連する問題