2010-06-15 2 views
0

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

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

ответ

1

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

Использование Creative Commons - набор метаданных Я смог прочитать оценки, используя следующий код. Этот код является частью Drupal Module, некоторые из ссылочных переменных - это настройки 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

Вы можете разместить ссылку на инструментарий youre usng .. только для справок в будущем. Благодаря! – prodigitalson

0

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