Предлагаемый php-код для чтения рейтинга файлов, установленный Adobe Bridge CS3 - PullRequest
0 голосов
/ 15 июня 2010

Справочная информация: Я пытался прочитать рейтинг, присвоенный в Adobe Bridge CS3, с помощью набора метаданных Creative Commons для php безуспешно.Я использую виртуальный хостинг, поэтому у меня нет возможности перекомпилировать php с разными модулями.

Доступен ли php-код, который можно использовать для считывания рейтинга, встроенного в файл .jpg?Я прочитал, что это отформатированный раздел xmp (xml) в файле.

Ответы [ 2 ]

1 голос
/ 16 июня 2010

Я публикую здесь свое решение на тот случай, если у кого-то возникнет похожая проблема, и он прочитает эту ветку. Вот что я нашел:
Windows Vista добавить оценку в раздел exif, встроенный в файл
Adobe Bridge добавляет еще один раздел в файл jpg, содержащий данные, отформатированные в формате xml. Структура данных xml + называется файлом xmp. Я еще не обработал файл с помощью Adobe bridge, поэтому я не смог прочитать данные xmp с помощью набора метаданных.

Используя инструментарий Creative Commons - Metadata, я смог прочитать оценки, используя следующий код. Этот код является частью модуля Drupal, некоторые из указанных переменных являются настройками Drupal: variable_get () является функцией Drupal для чтения переменной из постоянного хранилища данных.

include_once("PHP_JPEG_Metadata_Toolkit_1.11/JPEG.php");
  include_once("PHP_JPEG_Metadata_Toolkit_1.11/Photoshop_File_Info.php");
  include_once("PHP_JPEG_Metadata_Toolkit_1.11/EXIF.php");
  include_once("PHP_JPEG_Metadata_Toolkit_1.11/XMP.php");

  $photodir = variable_get('rotate_images_sourcefiles_dir',"sites/default/files/imageNodes");

  $rating_threshold = variable_get('rotate_images_rating_threshold',3);
  $allImages=dir($photodir);
  $filenames = scandir($photodir);

  foreach($filenames as $filename){

    $rating = null;
    $info = pathinfo($filename);
    if (strtolower($info['extension'])=="jpg"){
      //  First try to get the rating from the EXIF data, this is where it is stored by Windows Vista
      $exif = get_EXIF_JPEG( $photodir . "/" . $filename );
      $rating = $exif[0][18246]['Data'][0];

      $jpeg_header = get_jpeg_header_data($photodir . "/" . $filename );
      //  If no rating was found in the EXIF data, it may be in the Adobe format xmp section
      if ($rating == null){
        if($jpeg_header != false){
          $xmp = get_XMP_text($jpeg_header);
          $xmpArray = read_XMP_array_from_text($xmp);
          $rating = $xmpArray[0]['children'][0]['children'][0][attributes]['xap:Rating'];
        }   
      }
    }
  }

Мне нужно было изменить файл EXIF_Tags.php в наборе метаданных, добавив дополнительную запись в массив тегов EXIF. Я сообщил об этом автору, но я не верю, что он больше поддерживает модуль. Источник находится на sourceforge, но я не знаю, как разместить патч. Поэтому вам может потребоваться внести изменения в EXIF.php самостоятельно, чтобы код работал.

'EXIF' => array (

// Exif IFD

18246 => array ( 'Name' => "Rating",
                'Type' => "Numeric" ), 
0 голосов
/ 15 июня 2010

Теоретически, если вы используете fgets, вы сможете прочитать его.Было бы полезно, если вы знаете, где начинается этот раздел в байтах в файле.

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