[PHP][EXIF] ISO uitlees probleem

Pagina: 1
Acties:
  • 250 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Griffin
  • Registratie: Maart 2003
  • Laatst online: 18-09 07:59

Griffin

Is mythical

Topicstarter
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 :P )

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)

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 20:51

voodooless

Sound is no voodoo!

200 in hex = C8
680067272 in hex = 288900C8

00C8 zal wel de ISO waarde zijn, de rest zal wel andere EXIF data zijn.. En aangezien het een ushort is is ie dus ook maar 2 bytes. Als je gewoon and met 0xffff dan zou het moeten kloppen.

[ Voor 33% gewijzigd door voodooless op 22-01-2008 12:30 ]

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • Griffin
  • Registratie: Maart 2003
  • Laatst online: 18-09 07:59

Griffin

Is mythical

Topicstarter
@btm909:
ja ik wist het niet 100% zeker dus deze keer fout gegokt.

@voodooless:
ik snap waar het probleem zit, echter niet wat je bedoeld met
Als je gewoon and met 0xffff dan zou het moeten kloppen.
ik moet dus voordat ik het in de DB opsla een verandering uitvoeren, echter hoe en wat zou ik graag horen omdat HEX etc niet mijn sterkste kant is.

Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 20:51

voodooless

Sound is no voodoo!

PHP:
1
$isospeed = $isospeed & 0xffff


Meer is het niet ;)

* voodooless weet niet of dit correcte php syntax is though, maar het zal er vast niet ver naast liggen.

[ Voor 40% gewijzigd door voodooless op 22-01-2008 12:41 ]

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • Griffin
  • Registratie: Maart 2003
  • Laatst online: 18-09 07:59

Griffin

Is mythical

Topicstarter
voodooless schreef op dinsdag 22 januari 2008 @ 12:41:
PHP:
1
$isospeed = $isospeed & 0xffff


Meer is het niet ;)

* voodooless weet niet of dit correcte php syntax is though, maar het zal er vast niet ver naast liggen.
bedankt ik ga er mee aan de pruts

EDIT/UPDATE:
heb het geprobeerd en ja het was de goede php syntax.
Hier was ik zelf niet opgekomen en dus mijn dank is groot.
Verwijderd schreef op dinsdag 22 januari 2008 @ 12:51:
Tipje tussendoor:
PHP:
1
2
3
4
if(isset($result['SubIFD']['FocalLength']))
    $exifInfo[0] = $result['SubIFD']['FocalLength'];
else
    $exifInfo[0] = null;

Kan je ook schrijven als
PHP:
1
$exifInfo[0] = (isset($result['SubIFD']['FocalLength'])) ? $result['SubIFD']['FocalLength'] : null;


Wellicht handig voor het overzicht ;)
Noemen ze een tenaire (oid) if-else toch.
snap wel wat er gebeurt maar t ziet er zo raar voor mij uit op een of andere manier.
* Griffin moet het toch wel gaan leren op die manier te lezen want echt lastig is het niet.

[ Voor 57% gewijzigd door Griffin op 22-01-2008 12:56 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Tipje tussendoor:
PHP:
1
2
3
4
if(isset($result['SubIFD']['FocalLength']))
    $exifInfo[0] = $result['SubIFD']['FocalLength'];
else
    $exifInfo[0] = null;

Kan je ook schrijven als
PHP:
1
$exifInfo[0] = (isset($result['SubIFD']['FocalLength'])) ? $result['SubIFD']['FocalLength'] : null;


Wellicht handig voor het overzicht ;)

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Griffin schreef op dinsdag 22 januari 2008 @ 12:47:
Noemen ze een tenaire (oid) if-else toch.
De ?: is een ternary operator, in het Engels. Een fatsoenlijke Nederlandse vertaling is denk ik 'drieledig'.

Wie trösten wir uns, die Mörder aller Mörder?

Pagina: 1