Tweakers,
Ik ben bezig met een eigen IMS (ImageManagementSystem) en hiervoor wil ik ook een paar EXIF files uitlezen dmv PHP.
Ik heb een goed script gevonden (http://www.offsky.com/software/exif/index.php) en met de test die er bij zit werkt alles gewoon. Dus ik deze implementeren in mijn eigen IMS en het is niet extreem traag en werkt goed met het bijgeleverde plaatje. Echter als ik eigen fotos (met D40x) er door heen haal dan wordt de ISO-waarde verkeerd uitgelezen heb ik het vermoeden.
ISO-Waarde volgens windows : ISO-200
ISO-Waarde volgens exifer : 680067272 (redelijk hoog dacht ik zo
)
De exifer returnt een Array met daarin alle waardes, doormiddel van PRINT_R() heb ik opgezocht welke ik nodig heb en die in een eigen array gezet en deze return ik om op te slaan.
(ook dus een check ingebouwd dat als ze niet gevonden worden dat ze als Null geretourneerd worden).
Een print_r() van het voorbeeld plaatje met rare ISO waarde zie hier: (PS: boven de ==== is door mij zelf even neer gezet om te kijken welke 'nodes'(om het zo te noemen) uit de arrays ik nodig had)
http://fg-photos.net/exiftest/index.php
Nu is mijn vraag, welke waarde haalt windows op dat de ISO-waarde wel goed weergeeft en exifer niet. en hoe kom ik hier dan achter.
(een exif reader zelf bouwen is geen mogelijkheid, hier ben ik nog niet goed genoeg in PHP voor)
Ik ben bezig met een eigen IMS (ImageManagementSystem) en hiervoor wil ik ook een paar EXIF files uitlezen dmv PHP.
Ik heb een goed script gevonden (http://www.offsky.com/software/exif/index.php) en met de test die er bij zit werkt alles gewoon. Dus ik deze implementeren in mijn eigen IMS en het is niet extreem traag en werkt goed met het bijgeleverde plaatje. Echter als ik eigen fotos (met D40x) er door heen haal dan wordt de ISO-waarde verkeerd uitgelezen heb ik het vermoeden.
ISO-Waarde volgens windows : ISO-200
ISO-Waarde volgens exifer : 680067272 (redelijk hoog dacht ik zo
De exifer returnt een Array met daarin alle waardes, doormiddel van PRINT_R() heb ik opgezocht welke ik nodig heb en die in een eigen array gezet en deze return ik om op te slaan.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| $path = $imageUrl; $verbose = 0; $result = read_exif_data_raw($path, $verbose); $exifInfo = Array(); if(isset($result['SubIFD']['FocalLength'])) $exifInfo[0] = $result['SubIFD']['FocalLength']; else $exifInfo[0] = null; if(isset($result['SubIFD']['FNumber'])) $exifInfo[1] = $result['SubIFD']['FNumber']; else $exifInfo[1] = null; if(isset($result['SubIFD']['ExposureTime'])) $exifInfo[2] = $result['SubIFD']['ExposureTime']; else $exifInfo[2] = null; if(isset($result['SubIFD']['ISOSpeedRatings'])) $exifInfo[3] = $result['SubIFD']['ISOSpeedRatings']; else $exifInfo[3] = null; return $exifInfo; |
(ook dus een check ingebouwd dat als ze niet gevonden worden dat ze als Null geretourneerd worden).
Een print_r() van het voorbeeld plaatje met rare ISO waarde zie hier: (PS: boven de ==== is door mij zelf even neer gezet om te kijken welke 'nodes'(om het zo te noemen) uit de arrays ik nodig had)
http://fg-photos.net/exiftest/index.php
Nu is mijn vraag, welke waarde haalt windows op dat de ISO-waarde wel goed weergeeft en exifer niet. en hoe kom ik hier dan achter.
(een exif reader zelf bouwen is geen mogelijkheid, hier ben ik nog niet goed genoeg in PHP voor)