2011-11-12 6 views
6

Mam problem z niektórymi z moich zdjęć, gdy chcę odczytać dane EXIF.exif_read_data - Nieprawidłowy kod identyfikacyjny APP1 Exif

Mój kod poniżej:

$exif_date = exif_read_data($file_path, 'IFD0'); 

Z niektórych zdjęć i uzyskać warrning: Wiadomość: exif_read_data (001.jpg) [function.exif odczytania danych]: Nieprawidłowe APP1 Exif kodu identyfikującego

Moje pytanie brzmi: jak mogę uniknąć tej warrning, czy mogę sprawdzić, czy app1 jest poprawny przed exif_read? Dzięki za pomoc.

+0

Nadal nie wiem, dlaczego mam to warrning, więc znalazłem jedyny sposób, aby się go pozbyć, to wstawić "@" przed exif_read_data – baranq

Odpowiedz

0

Można użyć getimagesize() funkcji PHP do wyodrębnienia znaczników aplikacji z pliku, a następnie sprawdzić, czy marker APP1 rzeczywiście zawiera dane EXIF ​​(zawartości dla tego markera powinien zaczynać się od „Exif”)

11

za szybką odpowiedź , spójrz na ostatnie wiersze tego wpisu.

Myślę, że niektóre kod nadal brakuje. I przyszedł dokładnie w poprzek tego samego problemu i po poszukiwaniach znalazłem wiele stron internetowych związanych z tym problemem:

http://drupal.org/node/556970 raport bug z 2 rozwiązania:

  1. prostu położyć @, przed exif_read_data
  2. czeku $imageinfo['APP1'] jeśli zawiera Exif

Po przeczytaniu odpowiedzi dcro dowiedziałem się, że drugi parametr getimagesize() zwraca taką tablicę $imageinfo. Teraz testowałem jeden z moich obrazów z następującego kodu:

<?php 
getimagesize("test.jpg", $info); 
var_dump($info); 
?> 

Ten zwrócony następujący:

array(1) { 
    ["APP1"]=> 
    string(434) "http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> 
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Exempi + XMP Core 4.1.1"> 
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
    <rdf:Description rdf:about="" 
    xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <dc:type>Image</dc:type> 
    <dc:format>image/jpeg</dc:format> 
    </rdf:Description> 
</rdf:RDF> 
</x:xmpmeta> 

<?xpacket end="w"?>" 
} 

Ten btw. nie wygląda jak Exif. Wygląda to bardziej jak XMP, ale zabawną częścią jest na przykład to, że exiftool znajduje pewne dane exif (np. Orientacja). W XMP specification odkryłem, że możliwe jest posiadanie danych XMP i Exif obok siebie w jednym pliku (strona 18). Dalsze wyszukiwanie ujawniło, że istnieje skrypt podobny do tego do extract Exif from XMP.

W każdym razie, ponieważ

  1. getimagesize() nie daje mi użytecznych informacji o Exif w moim zdjęciem i
  2. podaną skrypt pokazuje, że w moim obrazie dane EXIF ​​nie jest osadzony w danych XMP i
  3. to po prostu stara się stłumić Exif-odczytu danych() ostrzeżenie

będę nadal korzystać z rozwiązania @exif-read-data($file_path).