exif_read_data - Неверный код идентификатора Exif APP1 - PullRequest
7 голосов
/ 12 ноября 2011

У меня проблема с некоторыми моими фотографиями, когда я хочу прочитать данные EXIF.

Мой код ниже:

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

С некоторыми изображениями я получаю предупреждение: Сообщение: exif_read_data (001.jpg) [function.exif-read-data]: Неверный код идентификатора Exif APP1

Мой вопрос: как мне избежать этого предупреждения, могу ли я как-то проверить, правильно ли app1 перед exif_read?Спасибо за помощь.

Ответы [ 2 ]

12 голосов
/ 14 января 2012

Для быстрого ответа взгляните на последние строки этого поста.

Я думаю, что некоторый код все еще отсутствует. Я столкнулся с той же самой проблемой, и после поиска я нашел несколько сайтов, связанных с этой проблемой:

http://drupal.org/node/556970 сообщение об ошибке с 2 решениями:

  1. просто положите @ перед exif_read_data
  2. проверьте $imageinfo['APP1'], содержит ли он Exif

Прочитав ответ dcro здесь, я обнаружил, что второй параметр getimagesize() возвращает такой массив $imageinfo. Теперь я протестировал одно из моих изображений со следующим кодом:

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

Это вернуло следующее:

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"?>"
}

Это кстати. не похоже на Exif. Это больше похоже на XMP , но забавно то, что, например, exiftool находит некоторые данные exif (например, ориентацию). В спецификации XMP я обнаружил, что можно хранить данные XMP и Exif рядом в одном файле (стр. 18). Дальнейший поиск показал, что есть такой скрипт для извлечения Exif из XMP .

В любом случае, с

  1. getimagesize () не дает мне полезную информацию об Exif на моей картинке и
  2. указанный скрипт показывает, что на моем изображении данные Exif не встроены в данные XMP и
  3. просто работает для подавления предупреждения exif-read-data ()

Я все еще буду использовать решение @exif-read-data($file_path).

0 голосов
/ 12 ноября 2011

Вы можете использовать функцию PHP getimagesize(), чтобы извлечь маркеры APP из файла и затем проверить, действительно ли маркер APP1 содержит данные EXIF ​​(содержимое этого маркера должно начинаться с «Exif»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...