exif чтение данных-неверный код идентификатора APP1 Exif

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

мой код ниже:

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

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

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

2 ответов


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


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

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

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

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

во всяком случае, с

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

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