Domanda

Sfondo: Ho cercato di leggere il rating che viene assegnato in Adobe Bridge CS3 utilizzando i Metadati creative commons toolkit per php senza successo.Sto usando di hosting condiviso, quindi non ho un ' occasione per ricompilare php con diversi moduli.

È un codice php che possono essere utilizzati per leggere la valutazione che è incorporato nella .il file jpg?Ho letto che questo è un xmp (xml) formattato sezione all'interno del file.

È stato utile?

Soluzione

Sto postando la mia soluzione nel caso in cui qualcun altro ha un problema simile e legge questo thread.Ecco cosa ho trovato:
Windows Vista aggiungere la valutazione di exif sezione incorporati nel file
Adobe Bridge aggiunge un'altra sezione per il jpg e il file che contiene i dati formattati in xml.Xml + struttura di dati è definito come il file xmp.Io non avevo ancora elaborato il file con Adobe bridge, che è il motivo per cui ero in grado di leggere i dati xmp con i Metadati toolkit.

Utilizza la Creative Commons - Metadati toolkit sono stato in grado di leggere le classificazioni utilizzando il seguente codice.Questo codice fa parte di un Modulo Drupal, alcune delle variabili di riferimento sono Drupal impostazioni:variable_get() è un sito in Drupal funzione per la lettura di una variabile da una perssistent archivio dati.

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'];
        }   
      }
    }
  }

Ho bisogno di modificare il EXIF_Tags.php file di metadati toolkit aggiungendo una voce aggiuntiva per il Tag EXIF array.Ho segnalato all'autore, ma non credo che lui è che mantenendo il modulo più.La fonte è su sourceforge, ma non so come postare una patch.Quindi potrebbe essere necessario apportare la modifica EXIF.php voi a fare il lavoro di codice.

'EXIF' => array (

// Exif IFD

18246 => array ( 'Name' => "Rating",
                'Type' => "Numeric" ), 

Altri suggerimenti

In teoria, se si utilizza fgets si dovrebbe essere in grado di leggerlo. Sarebbe utile se si sa dove questa sezione inizia in termini di byte nel file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top