Changeset 7511


Ignore:
Timestamp:
Oct 31, 2010, 10:48:27 AM (10 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.