Changeset 7511


Ignore:
Timestamp:
10/31/10 10:48:27 (9 years ago)
Author:
grum
Message:

Update JpegMetadata class to implement COM segment as a tag and keywords in "magic" tags
feature:1975, feature:1976

Location:
extensions/AMetaData/JpegMetaData
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • extensions/AMetaData/JpegMetaData/Common/Const.class.php

    r6729 r7511  
    147147    const XMP   = "xmp"; 
    148148    const MAGIC = "magic"; 
     149    const COM   = "com"; 
    149150 
    150151    const EXIF_TIFF = "exif.tiff"; 
  • extensions/AMetaData/JpegMetaData/JpegMetaData.class.php

    r7441 r7511  
    101101 * |         |            |   . add XML <lr:hierarchicalSubject> markup 
    102102 * |         |            | 
    103  * |         |            | 
    104  * |         |            | 
    105  * |         |            | 
     103 * |         |            | * mantis bug:1975 
     104 * |         |            |   . Implement COM segment as a tag 
     105 * |         |            | 
     106 * |         |            | * mantis bug:1976 
     107 * |         |            |   . Implement keywords as magic tag 
    106108 * |         |            | 
    107109 * |         |            | 
     
    242244        'maker' => true, 
    243245        'magic' => true, 
     246        'com'   => true 
    244247      ); 
    245248 
     
    275278        $list[]="magic"; 
    276279 
     280      if($default['com']) 
     281        $list[]="com"; 
     282 
    277283      foreach($list as $val) 
    278284      { 
     
    300306            $tmp=new MagicTags(); 
    301307            $schema=Schemas::MAGIC; 
     308            break; 
     309          case "com": 
     310            $tmp=new ComTags(); 
     311            $schema=Schemas::COM; 
    302312            break; 
    303313          case MAKER_PENTAX: 
     
    479489              } 
    480490            } 
     491            elseif($data instanceof ComReader) 
     492            { 
     493              $this->loadTags($data->getTags(), Schemas::COM); 
     494            } 
    481495          } 
    482496        } 
     
    577591        'iptc'  => true, 
    578592        'xmp'   => true, 
    579         'magic' => true 
     593        'magic' => true, 
     594        'com'   => true 
    580595      ); 
    581596 
     
    676691          foreach($returned[1] as $testKey) 
    677692          { 
    678             $found=$found & array_key_exists($testKey, $this->tags); 
     693            $found=$found & (array_key_exists($testKey, $this->tags) and $this->tags[$testKey]->getValue()!=''); 
    679694          } 
    680695          if(count($returned[1])==0) $found=false; 
     
    780795          if($result[4][0]=="W" or $result[4][0]=="S") $num=-$num; 
    781796          return($num); 
     797        case "Author.Keywords": 
     798          $list=array_flip(array_flip(explode(',', str_replace(array('/', '|', ', '), ',', $value)))); 
     799          sort($list); 
     800          return(implode(',', $list)); 
     801          break; 
    782802        default: 
    783803          return($value); 
  • extensions/AMetaData/JpegMetaData/Locale/en_UK/Tag.po

    r5789 r7511  
    33"Project-Id-Version: TagNames\n" 
    44"POT-Creation-Date: \n" 
    5 "PO-Revision-Date: 2010-04-11 09:31+0100\n" 
     5"PO-Revision-Date: 2010-10-31 01:25+0100\n" 
    66"Last-Translator: grum <grum@piwigo.org>\n" 
    77"Language-Team: grum\n" 
     
    285285msgid "Author.ImageTitle" 
    286286msgstr "Title" 
     287 
     288#. [Metadata name] Magic JpegMetadata computed tags / Author.Keywords 
     289msgid "Author.Keywords" 
     290msgstr "Keywords/Subject" 
    287291 
    288292#. Canon specific tags / 0x0001.4 (CanonCameraSettings.CanonFlashMode) 
     
    64126416msgstr "Y resolution" 
    64136417 
     6418#. [Metadata name] XMP tags / digiKam:TagsList 
     6419msgid "digiKam:TagsList" 
     6420msgstr "Keywords/Subject" 
     6421 
     6422#. [Metadata name] XMP tags / lr:hierarchicalSubject 
     6423msgid "lr:hierarchicalSubject" 
     6424msgstr "Keywords/Subject" 
     6425 
     6426#. [Metadata name] IPTC tags / 0x20c04 (Subject Reference[Detail Name]) 
     6427msgid "Subject Reference[Detail Name]" 
     6428msgstr "Subject Reference (Detail name)" 
     6429 
     6430#. [Metadata name] IPTC tags / 0x20c00 (Subject Reference[IPR]) 
     6431msgid "Subject Reference[IPR]" 
     6432msgstr "Subject Reference (IPR)" 
     6433 
     6434#. [Metadata name] IPTC tags / 0x20c03 (Subject Reference[Matter Name]) 
     6435msgid "Subject Reference[Matter Name]" 
     6436msgstr "Subject Reference (Matter Name)" 
     6437 
     6438#. [Metadata name] IPTC tags / 0x20c02 (Subject Reference[Name]) 
     6439msgid "Subject Reference[Name]" 
     6440msgstr "Subject Reference (Name)" 
     6441 
     6442#. [Metadata name] IPTC tags / 0x20c01 (Subject Reference[Number]) 
     6443msgid "Subject Reference[Number]" 
     6444msgstr "Subject Reference (Number)" 
     6445 
  • extensions/AMetaData/JpegMetaData/Locale/fr_FR/Tag.po

    r5789 r7511  
    33"Project-Id-Version: TagNames\n" 
    44"POT-Creation-Date: \n" 
    5 "PO-Revision-Date: 2010-04-11 10:00+0100\n" 
     5"PO-Revision-Date: 2010-10-31 01:13+0100\n" 
    66"Last-Translator: grum <grum@piwigo.org>\n" 
    77"Language-Team: grum\n" 
     
    289289msgid "Author.ImageTitle" 
    290290msgstr "Titre" 
     291 
     292#. [Metadata name] Magic JpegMetadata computed tags / Author.Keywords 
     293msgid "Author.Keywords" 
     294msgstr "Mots clefs" 
    291295 
    292296#. Canon specific tags / 0x0001.4 (CanonCameraSettings.CanonFlashMode) 
     
    65616565msgstr "Résolution Y" 
    65626566 
     6567#. [Metadata name] XMP tags / digiKam:TagsList 
     6568msgid "digiKam:TagsList" 
     6569msgstr "Mots clefs" 
     6570 
     6571#. [Metadata name] XMP tags / lr:hierarchicalSubject 
     6572msgid "lr:hierarchicalSubject" 
     6573msgstr "Mots clefs" 
     6574 
     6575#. [Metadata name] IPTC tags / 0x20c04 (Subject Reference[Detail Name]) 
     6576msgid "Subject Reference[Detail Name]" 
     6577msgstr "Sujet de référence (nom détaillé)" 
     6578 
     6579#. [Metadata name] IPTC tags / 0x20c00 (Subject Reference[IPR]) 
     6580msgid "Subject Reference[IPR]" 
     6581msgstr "Sujet de référence (IPR)" 
     6582 
     6583#. [Metadata name] IPTC tags / 0x20c03 (Subject Reference[Matter Name]) 
     6584msgid "Subject Reference[Matter Name]" 
     6585msgstr "Sujet de référence (matière)" 
     6586 
     6587#. [Metadata name] IPTC tags / 0x20c02 (Subject Reference[Name]) 
     6588msgid "Subject Reference[Name]" 
     6589msgstr "Sujet de référence (nom)" 
     6590 
     6591#. [Metadata name] IPTC tags / 0x20c01 (Subject Reference[Number]) 
     6592msgid "Subject Reference[Number]" 
     6593msgstr "Sujet de référence (numéro)" 
     6594 
  • extensions/AMetaData/JpegMetaData/Readers/AppMarkerSegmentReader.class.php

    r4972 r7511  
    7373  require_once(JPEG_METADATA_DIR."Readers/XmpReader.class.php"); 
    7474  require_once(JPEG_METADATA_DIR."Readers/IptcReader.class.php"); 
     75  require_once(JPEG_METADATA_DIR."Readers/ComReader.class.php"); 
    7576 
    7677  class AppMarkerSegmentReader 
     
    922923    private function readSegmentCOM() 
    923924    { 
    924       $this->data = $this->workData->readASCII(); 
     925      $this->data = new ComReader($this->workData->readASCII()); 
    925926      $this->dataLoaded=true; 
    926927    } 
  • extensions/AMetaData/JpegMetaData/TagDefinitions/MagicTags.class.php

    r6986 r7511  
    254254          "{iptc.Caption/Abstract}", 
    255255          "{exif.exif.UserComment}", 
     256          "{com.comment}" 
     257        ) 
     258      ), 
     259 
     260      'Author.Keywords' => Array( 
     261        'implemented'  => true, 
     262        'translatable' => false, 
     263        'tagValues' => Array( 
     264          "{xmp.dc:subject[values]},{iptc.Keywords[values]},{xmp.digiKam:TagsList[values]},{xmp.lr:hierarchicalSubject[values]}" 
    256265        ) 
    257266      ), 
  • extensions/AMetaData/JpegMetaData/test/index.php

    r5222 r7511  
    7474     7 => "808000", 
    7575     8 => "800080", 
    76      9 => "808080"); 
     76     9 => "808080", 
     77     10 => "6080F0", 
     78     11 => "F06080", 
     79     12 => "80F060", 
     80     13 => "8080FF", 
     81     14 => "80FF80", 
     82     15 => "FF8080" ); 
    7783 
    7884    $parser = xml_parser_create(); 
     
    237243  $page.="<span style='font-family:monospace;'>"; 
    238244 
    239   $jpeg = new JpegReader($file); 
     245  $jpeg = new JpegReader($file, Array('filter' => JpegMetaData::TAGFILTER_ALL, 'xmp' => false, 'maker' => false, 'iptc' => false, 'exif' => false)); 
    240246 
    241247  $page2="JpegReader extraction<br>"; 
     
    286292        } 
    287293      } 
     294      elseif($data instanceof ComReader) 
     295      { 
     296        foreach($data->getTags() as $key2 => $val2) 
     297        { 
     298          $page2.="<div style='color:#0000ff;font-weight:normal;margin-left:12px;'>"; 
     299          $page2.=dump_tag($key2, $val2, ""); 
     300          $page2.="</div>"; 
     301        } 
     302      } 
    288303      elseif(is_array($data)) 
    289304      { 
     
    303318  $page2.="<div style='font-family:monospace;'>JpegMetaData - tag from test file<br>"; 
    304319  $page2.="<table style='border:1px solid #000000;width:100%;'>"; 
    305   $page2.="<tr style='border-bottom:1x solid #000000;'><th>Key</th><th>Name</th><th>Value</th><th>Computed Value</th></tr>"; 
     320  $page2.="<tr style='border-bottom:1x solid #000000;'><th>Schema</th><th>Key</th><th>Name</th><th>Value</th><th>Computed Value</th></tr>"; 
    306321 
    307322 
    308323  $time=microtime(true); 
    309   $jpegmd = new JpegMetaData($file, Array( 
    310     'filter' => JpegMetaData::TAGFILTER_IMPLEMENTED, 
    311     'optimizeIptcDateTime' => true) 
    312   ); 
     324  $jpegmd = new JpegMetaData($file, 
     325                              Array( 
     326                                'filter' => JpegMetaData::TAGFILTER_IMPLEMENTED, 
     327                                'xmp' => true, 
     328                                'maker' => true, 
     329                                'iptc' => true, 
     330                                'magic' => true, 
     331                                'exif' => true, 
     332                                'optimizeIptcDateTime' => true 
     333                              ) 
     334                            ); 
    313335  $time2=microtime(true); 
    314336 
     
    332354    if(is_array($value)) 
    333355      $value=print_r($value, true); 
    334     $page2.="<tr><td>".$key."</td><td>".L10n::get($val->getName())."</td><td>".$value."</td><td style='$style'>".$txt."</td></tr>"; 
     356    $page2.="<tr><td>".$val->getSchema()."</td><td>".$key."</td><td>".L10n::get($val->getName())."</td><td>".$value."</td><td style='$style'>".$txt."</td></tr>"; 
    335357    $i++; 
    336358  } 
     
    342364  $page2.="<table style='border:1px solid #000000;width:100%;'>"; 
    343365  $page2.="<tr style='border-bottom:1x solid #000000;'><th>Key</th><th>Name</th><th>Implemented</th></tr>"; 
    344   foreach(JpegMetaData::getTagList(Array('filter' => JpegMetaData::TAGFILTER_ALL, 'xmp' => true, 'maker' => true, 'iptc' => true)) as $key => $val) 
     366  foreach(JpegMetaData::getTagList( 
     367                                    Array( 
     368                                      'filter' => JpegMetaData::TAGFILTER_ALL, 
     369                                      'xmp' => true, 
     370                                      'maker' => true, 
     371                                      'iptc' => true, 
     372                                      'magic' => true, 
     373                                      'exif' => true, 
     374                                    ) 
     375                                  ) as $key => $val) 
    345376  { 
    346377    $val['implemented']?$i++:$j++; 
Note: See TracChangeset for help on using the changeset viewer.