Считывание EXIF-данных из HEIC photo с помощью PHP

#php #exif #heic

#php #exif #heic

Вопрос:

Я хочу прочитать EXIF-данные с фотографии HEIC.

Если я запущу:

 <?php 
    var_dump(exif_read_data("test.heic"));
  

Я получаю

 bool(false)
  

Если я запускаю инструмент Linux exiftool test.heic , то я могу увидеть всю необходимую мне информацию (местоположение, название камеры и т.д.).

Если я запускаю exif_read_data("test.jpg") — тогда я получаю данные. Итак, я знаю, что синтаксис, который я использую, правильный.

Я использую PHP 7.1 и ImageMagick 6.9.4-10 (1684).

 print_r(imagick::getVersion());
Array
(
    [versionNumber] => 1684
    [versionString] => ImageMagick 6.9.4-10 Q16 x86_64 2017-05-23 http://www.imagemagick.org
)
  

Нужны ли мне более новые версии? Если да, то какие из них работают с HEIC?

Комментарии:

1. Является ли эта версия ImageMagick той, которую использует PHP?

2. @ColeJohnson да — я отредактировал вопрос, чтобы показать, что именно эту версию использует PHP.

3. Из списков изменений ImageMagick вам нужно 7.0.8-25 для ImageMagick 7 или 6.9.10-25 для Imagemagick 6. Итак, ваша версия слишком старая.

Ответ №1:

Это ограничение в расширении EXIF для PHP. В настоящее время расширение EXIF будет считывать только два формата файлов:

  • JPEG
  • TIFF

Как разработчик расширения для EXIF на PHP, я не могу сказать, что существует конкретный план поддержки большего количества форматов, поскольку только недавно на трекере ошибок был опубликован один отчет в отношении поддержки изображений PNG (начиная с версии 1.5 спецификации PNG).

Я предлагаю вам сообщить об этом как о «Запросе функции» в PHP bug tracker, чтобы его можно было отследить (и если вы можете предоставить подробности или даже экспериментальную реализацию, это помогло бы быстрее перенести это в PHP). На данный момент единственным вариантом является преобразование изображений в формат JPEG или TIFF, чтобы сделать их читаемыми с помощью расширения EXIF.

Комментарии:

1. Можете ли вы предоставить обновленную информацию относительно этого?