Changeset 4931 for extensions/AMetaData


Ignore:
Timestamp:
Feb 21, 2010, 8:41:06 PM (15 years ago)
Author:
grum
Message:

Implement Nikon camera's maker note ; add some Xmp tag ; fix some bugs

Location:
extensions/AMetaData
Files:
1 deleted
12 edited

Legend:

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

    r4904 r4931  
    165165     *  'implemented' => Boolean, allowing to know if the tags is implemented or
    166166     *                   not
     167     *  'translatable'=> Boolean, allowing to know if the tag value can be
     168     *                   translated
    167169     *  'name'        => String, the tag name translated in locale language
    168170     *
    169171     * @Param Array $options  (optional)
    170      * @return Array(keyName => Array(
    171      *                            'implemented' => Boolean,
    172      *                            'translatable' => Boolean,
    173      *                            'name' => String))
     172     * @return Array(keyName => Array('implemented' => Boolean, 'name' => String))
    174173     */
    175174    static public function getTagList($options=Array())
     
    202201      {
    203202        $list[]=MAKER_PENTAX;
     203        $list[]=MAKER_NIKON;
    204204      }
    205205
     
    236236            $tmp=new PentaxTags();
    237237            $schema="exif.".MAKER_PENTAX;
     238            break;
     239          case MAKER_NIKON:
     240            include_once(JPEG_METADATA_DIR."TagDefinitions/NikonTags.class.php");
     241            $tmp=new NikonTags();
     242            $schema="exif.".MAKER_NIKON;
    238243            break;
    239244          default:
  • extensions/AMetaData/JpegMetaData/Readers/IfdEntryReader.class.php

    r4824 r4931  
    269269    }
    270270
    271 
    272271    public function toString()
    273272    {
  • extensions/AMetaData/JpegMetaData/Readers/NikonReader.class.php

    r4904 r4931  
    4242 *
    4343 *
     44 * ****             All known tags are not implemented !!                   ****
     45 *
     46 *
    4447 * The NikonReader class is derived from the MakerNotesReader class.
    4548 *
     
    5659  class NikonReader extends MakerNotesReader
    5760  {
     61    /* these 2 specific metadata are used to decrypt some information, like the
     62     * data lens
     63     */
     64    protected $serialNumber="";
     65    protected $shutterCount=-1;
     66
     67    protected $toDecode=Array();
     68
    5869    /**
    5970     * The constructor needs, like the ancestor, the datas to be parsed
     
    8899      }
    89100
     101      // offset inside Nikon maker note are relative
     102      $offset=-10;
     103
    90104      parent::__construct($data, $offset, $byteOrder);
     105
     106      $this->processEncryptedTags();
    91107    }
    92108
     
    147163
    148164    /**
     165     * encrypted values are processed in one shot when all the tags are processed
     166     * with this method, we are sure the "SerialNumber" (0x001d) and the
     167     * "ShutterCount" (0x00a7) tags are initialized
     168     */
     169    protected function processEncryptedTags()
     170    {
     171      foreach($this->toDecode as $key=>$val)
     172      {
     173        $tagIndex=$this->getTagIndexById($key);
     174        if($tagIndex>-1)
     175        {
     176          $this->entries[$tagIndex]->getTag()->setLabel($this->processSpecialTag($key, $val[0], $val[1]));
     177          //echo sprintf("%04x * %s => %s<br>",$key,ConvertData::toHexDump($val[0], ByteType::ASCII),$this->processSpecialTag($key, $val[0], $val[1]));
     178        }
     179      }
     180    }
     181
     182    /**
    149183     * this function do the interpretation of specials tags
    150184     *
     
    161195      switch($tagId)
    162196      {
     197        case 0x0001: // "MakerNoteVersion"
     198          // 0x30323030 => String "0200" => 2.00
     199          $major=substr($values,0,2);
     200          if(substr($values,0,1)=="0")
     201          {
     202            $major=substr($values,1,1);
     203          }
     204          else
     205          {
     206            $major=substr($values,0,2);
     207          }
     208          $minor=substr($values,2);
     209          $returned=sprintf("%s.%s", $major, $minor);
     210          break;
     211        case 0x001d: // "SerialNumber"
     212          $returned=ConvertData::toStrings($values);
     213          $this->serialNumber=$returned;
     214          break;
     215        case 0x0003: // "ColorMode"
     216        case 0x0004: // "Quality"
     217        case 0x0005: // "WhiteBalance"
     218        case 0x0006: // "Sharpness"
     219        case 0x0007: // "FocusMode"
     220        case 0x0008: // "FlashSetting"
     221        case 0x0009: // "FlashType"
     222        case 0x000f: // "ISOSelection"
     223        case 0x0080: // "ImageAdjustment"
     224        case 0x0081: // "ToneComp"
     225        case 0x0082: // "AuxiliaryLens"
     226        case 0x008D: // "ColorHue"
     227        case 0x008f: // "SceneMode"
     228        case 0x0090: // "LightSource"
     229        case 0x0095: // "NoiseReduction"
     230        case 0x009c: // "SceneAssist"
     231        case 0x00a0: // "SerialNumber"
     232        case 0x00a9: // "ImageOptimization"
     233        case 0x00aa: // "Saturation"
     234        case 0x00ab: // "VariProgram"
     235        case 0x0e09: // "NikonCaptureVersion"
     236          /*
     237           * null terminated strings
     238           */
     239          $returned=ConvertData::toStrings($values);
     240          break;
     241        case 0x092: // "HueAdjustment"
     242        case 0x00a2: // "ImageDataSize"
     243          $returned=$values;
     244          break;
     245        case 0x0a7: // "ShutterCount"
     246          $this->shutterCount=$values;
     247          $returned=$values;
     248          break;
     249        case 0x001f: // "VRInfo"
     250          $returned=(ord($values{4})==1)?"On":"Off";
     251          break;
     252        case 0x0083: // "LensType"
     253          $tag=$this->tagDef->getTagById(0x0083);
     254
     255          $returned=Array();
     256          if(($values & 0x0001) == 0x0001)
     257            $returned[]=$tag['tagValues.specialValues'][0x0001];
     258
     259          if(($values & 0x0002) == 0x0002)
     260            $returned[]=$tag['tagValues.specialValues'][0x0002];
     261
     262          if(($values & 0x0004) == 0x0004)
     263            $returned[]=$tag['tagValues.specialValues'][0x0004];
     264
     265          if(($values & 0x0008) == 0x0008)
     266            $returned[]=$tag['tagValues.specialValues'][0x0008];
     267          break;
     268        case 0x0084: // "Lens"
     269          /* array of 4 rationnal
     270           * - short focal
     271           * - long focal
     272           * - aperture at short focal
     273           * - aperture at long focal
     274           *
     275           * ==> 18-70mm f/3.5-4.5
     276           */
     277          $result=array();
     278          foreach($values as $val)
     279          {
     280            if($val[1]==0) $val[1]==1;
     281            $result[]=$val[0]/$val[1];
     282          }
     283
     284          if($result[0]!=$result[1])
     285          {
     286            $returned=sprintf("%.0f-%.0fmm ", $result[0], $result[1]);
     287          }
     288          else
     289          {
     290            $returned=sprintf("%.0fmm ", $result[0]);
     291          }
     292
     293          if($result[2]!=$result[3])
     294          {
     295            $returned.=sprintf("f/%.1f-%.1f", $result[2], $result[3]);
     296          }
     297          else
     298          {
     299            $returned.=sprintf("f/%.1f", $result[2]);
     300          }
     301          break;
     302        case 0x0086: // "DigitalZoom"
     303          if($values[1]==0) $values[1]=1;
     304          $returned=sprintf("x%.1f", $values[0]/$values[1]);
     305          break;
     306        case 0x0088: // "AFInfo"
     307          /* - shortInt : AFAreaMode
     308           * - shortInt : AFPoint
     309           * - longInt  : AFPointsInFocus
     310           */
     311          $tag=$this->tagDef->getTagById(0x0088);
     312
     313          $values.="\0\0\0\0";
     314
     315          $returned=Array();
     316
     317          $tmp=ord($values{0});
     318          $returned['AFAreaMode'] = $tag['tagValues.specialValues'][0][$tmp];
     319
     320          $tmp=ord($values{1});
     321          $returned['AFPoint'] = $tag['tagValues.specialValues'][1][$tmp];
     322
     323          if($values=="\x00\x07\xff\xff")
     324          {
     325            $returned['AFPointsInFocus'] = $tag['tagValues.specialValues'][2][$values];
     326          }
     327          else
     328          {
     329            $tmp=ord($values{2}) * 256 + ord($values{3});
     330            $returned['AFPointsInFocus']=Array();
     331            foreach($tag['tagValues.specialValues'][2] as $key => $val)
     332            {
     333              if(($tmp & $key) == $key)
     334                $returned['AFPointsInFocus'][]=$val;
     335            }
     336          }
     337          break;
     338        case 0x0089: // "ShootingMode"
     339          $returned=Array();
     340          $tag=$this->tagDef->getTagById(0x0089);
     341
     342          if(!($values & 0x87))
     343          {
     344            $returned[]=$tag['tagValues.specialValues'][0x00];
     345          }
     346
     347          if(preg_match("/.*d70.*/i",MakerNotesSignatures::getExifMaker()))
     348          {
     349            $bit5=1;
     350          }
     351          else
     352          {
     353            $bit5=0;
     354          }
     355
     356          if($values)
     357          {
     358            foreach($tag['tagValues.specialValues'] as $key => $val)
     359            {
     360              if((($values & $key) == $key) && ($key!=0x00))
     361              {
     362                if($key==0x20)
     363                {
     364                  $returned[]=$val[$bit5];
     365                }
     366                else
     367                {
     368                  $returned[]=$val;
     369                }
     370              }
     371            }
     372          }
     373          break;
     374        case 0x0098: // "LensData"
     375          if($this->shutterCount==-1 or $this->serialNumber=="")
     376          {
     377            $this->toDecode[0x0098]=Array($values, $type);
     378            $returned="";
     379          }
     380          else
     381          {
     382            $returned=$this->readLensData($values);
     383          }
     384          break;
     385        case 0x0099: // "RawImageCenter"
     386          $returned=Array(
     387            'x' => $values[0],
     388            'y' => $values[1],
     389          );
     390          break;
     391        case 0x009a: // "SensorPixelSize"
     392          if($values[0][1]==0) $values[0][1]=1;
     393          if($values[1][1]==0) $values[1][1]=1;
     394
     395          $returned=sprintf("%.1f x %.1f µm", ($values[0][0]/$values[0][1]), ($values[1][0]/$values[1][1]));
     396          break;
    163397        default:
    164398          $returned="Not yet implemented;".ConvertData::toHexDump($tagId, ByteType::USHORT)." => ".ConvertData::toHexDump($values, $type);
     
    167401      return($returned);
    168402    }
     403
     404    /**
     405     * this function is used to decrypt datas from the Nikon "LensData" tag
     406     *
     407     * @param String $data : data from the exif.Nikon.LensData metadata
     408     * @return Array : list of properties + lens name (computed)
     409     */
     410    private function readLensData($data)
     411    {
     412      $returned="";
     413      $nfo=Array();
     414      $dataReader=new Data($data, $this->byteOrder);
     415
     416      $nfo['LensDataVersion']=$dataReader->readASCII(4);
     417
     418      if(substr($nfo['LensDataVersion'],0,2)=="02")
     419      {
     420        // in this case, data are encrypted
     421        $decrypted=$nfo['LensDataVersion'].$this->decryptData($this->serialNumberInteger(), $this->shutterCount,$dataReader->readASCII(-1,4));
     422        $dataReader->setData($decrypted);
     423      }
     424
     425      switch($nfo['LensDataVersion'])
     426      {
     427        case '0100' :
     428            $nfo['LensIDNumber']=$dataReader->readUByte(6);
     429            $nfo['LensFStops']=$dataReader->readUByte(7);
     430            $nfo['MinFocalLength']=$dataReader->readUByte(8);
     431            $nfo['MaxFocalLength']=$dataReader->readUByte(9);
     432            $nfo['MaxApertureAtMinFocal']=$dataReader->readUByte(10);
     433            $nfo['MaxApertureAtMaxFocal']=$dataReader->readUByte(11);
     434            $nfo['MCUVersion']=$dataReader->readUByte(12);
     435          break;
     436        case '0101' :
     437        case '0201' :
     438        case '0202' :
     439        case '0203' :
     440            $nfo['LensIDNumber']=$dataReader->readUByte(11);
     441            $nfo['LensFStops']=$dataReader->readUByte(12);
     442            $nfo['MinFocalLength']=$dataReader->readUByte(13);
     443            $nfo['MaxFocalLength']=$dataReader->readUByte(14);
     444            $nfo['MaxApertureAtMinFocal']=$dataReader->readUByte(15);
     445            $nfo['MaxApertureAtMaxFocal']=$dataReader->readUByte(16);
     446            $nfo['MCUVersion']=$dataReader->readUByte(17);
     447          break;
     448        case '0204' :
     449            $nfo['LensIDNumber']=$dataReader->readUByte(12);
     450            $nfo['LensFStops']=$dataReader->readUByte(13);
     451            $nfo['MinFocalLength']=$dataReader->readUByte(14);
     452            $nfo['MaxFocalLength']=$dataReader->readUByte(15);
     453            $nfo['MaxApertureAtMinFocal']=$dataReader->readUByte(16);
     454            $nfo['MaxApertureAtMaxFocal']=$dataReader->readUByte(17);
     455            $nfo['MCUVersion']=$dataReader->readUByte(18);
     456          break;
     457      }
     458
     459      $keyLens = sprintf("%02X %02X %02X %02X %02X %02X %02X %02X",
     460        $nfo['LensIDNumber'],
     461        $nfo['LensFStops'],
     462        $nfo['MinFocalLength'],
     463        $nfo['MaxFocalLength'],
     464        $nfo['MaxApertureAtMinFocal'],
     465        $nfo['MaxApertureAtMaxFocal'],
     466        $nfo['MCUVersion'],
     467        $this->getTagById(0x0083)->getValue()
     468      );
     469
     470      $tag=$this->tagDef->getTagById(0x0098);
     471      if(array_key_exists($keyLens, $tag['tagValues.lenses']))
     472      {
     473        $returned = $tag['tagValues.lenses'][$keyLens];
     474      }
     475      else
     476      {
     477        $returned = $tag['tagValues.lenses']['unknown']." (".$keyLens." / ".$nfo['LensDataVersion'].")";
     478      }
     479
     480
     481      unset($data);
     482      unset($nfo);
     483      return($returned);
     484    }
     485
     486    /**
     487     * Nikon encrypt some data
     488     * This function is used to decrypt them. Don't ask anything about "how does
     489     * it work" abd "what's it doing", I just translated the C++ & Perl code
     490     * from Exiv2, Exiftool & Raw Photo Parser (Copyright 2004-2006 Dave Coffin)
     491     *
     492     * @param Integer $serialNumber : the camera serial number, in Integer
     493     *                                format (from the 0x001d tag, not the 0x00a0)
     494     * @param Integer $shutterCount : shutterCount value in the file
     495     * @param String $data : data to decrypt
     496     * @param Integer $decryptedLength : number of byte to decrypt
     497     * @return String : the decrypted data
     498     */
     499    private function decryptData($serialNumber, $shutterCount, $data, $decryptedLength=0)
     500    {
     501      $xlat = Array(
     502                Array(0xc1,0xbf,0x6d,0x0d,0x59,0xc5,0x13,0x9d,0x83,0x61,0x6b,0x4f,0xc7,0x7f,0x3d,0x3d,
     503                      0x53,0x59,0xe3,0xc7,0xe9,0x2f,0x95,0xa7,0x95,0x1f,0xdf,0x7f,0x2b,0x29,0xc7,0x0d,
     504                      0xdf,0x07,0xef,0x71,0x89,0x3d,0x13,0x3d,0x3b,0x13,0xfb,0x0d,0x89,0xc1,0x65,0x1f,
     505                      0xb3,0x0d,0x6b,0x29,0xe3,0xfb,0xef,0xa3,0x6b,0x47,0x7f,0x95,0x35,0xa7,0x47,0x4f,
     506                      0xc7,0xf1,0x59,0x95,0x35,0x11,0x29,0x61,0xf1,0x3d,0xb3,0x2b,0x0d,0x43,0x89,0xc1,
     507                      0x9d,0x9d,0x89,0x65,0xf1,0xe9,0xdf,0xbf,0x3d,0x7f,0x53,0x97,0xe5,0xe9,0x95,0x17,
     508                      0x1d,0x3d,0x8b,0xfb,0xc7,0xe3,0x67,0xa7,0x07,0xf1,0x71,0xa7,0x53,0xb5,0x29,0x89,
     509                      0xe5,0x2b,0xa7,0x17,0x29,0xe9,0x4f,0xc5,0x65,0x6d,0x6b,0xef,0x0d,0x89,0x49,0x2f,
     510                      0xb3,0x43,0x53,0x65,0x1d,0x49,0xa3,0x13,0x89,0x59,0xef,0x6b,0xef,0x65,0x1d,0x0b,
     511                      0x59,0x13,0xe3,0x4f,0x9d,0xb3,0x29,0x43,0x2b,0x07,0x1d,0x95,0x59,0x59,0x47,0xfb,
     512                      0xe5,0xe9,0x61,0x47,0x2f,0x35,0x7f,0x17,0x7f,0xef,0x7f,0x95,0x95,0x71,0xd3,0xa3,
     513                      0x0b,0x71,0xa3,0xad,0x0b,0x3b,0xb5,0xfb,0xa3,0xbf,0x4f,0x83,0x1d,0xad,0xe9,0x2f,
     514                      0x71,0x65,0xa3,0xe5,0x07,0x35,0x3d,0x0d,0xb5,0xe9,0xe5,0x47,0x3b,0x9d,0xef,0x35,
     515                      0xa3,0xbf,0xb3,0xdf,0x53,0xd3,0x97,0x53,0x49,0x71,0x07,0x35,0x61,0x71,0x2f,0x43,
     516                      0x2f,0x11,0xdf,0x17,0x97,0xfb,0x95,0x3b,0x7f,0x6b,0xd3,0x25,0xbf,0xad,0xc7,0xc5,
     517                      0xc5,0xb5,0x8b,0xef,0x2f,0xd3,0x07,0x6b,0x25,0x49,0x95,0x25,0x49,0x6d,0x71,0xc7),
     518                Array(0xa7,0xbc,0xc9,0xad,0x91,0xdf,0x85,0xe5,0xd4,0x78,0xd5,0x17,0x46,0x7c,0x29,0x4c,
     519                      0x4d,0x03,0xe9,0x25,0x68,0x11,0x86,0xb3,0xbd,0xf7,0x6f,0x61,0x22,0xa2,0x26,0x34,
     520                      0x2a,0xbe,0x1e,0x46,0x14,0x68,0x9d,0x44,0x18,0xc2,0x40,0xf4,0x7e,0x5f,0x1b,0xad,
     521                      0x0b,0x94,0xb6,0x67,0xb4,0x0b,0xe1,0xea,0x95,0x9c,0x66,0xdc,0xe7,0x5d,0x6c,0x05,
     522                      0xda,0xd5,0xdf,0x7a,0xef,0xf6,0xdb,0x1f,0x82,0x4c,0xc0,0x68,0x47,0xa1,0xbd,0xee,
     523                      0x39,0x50,0x56,0x4a,0xdd,0xdf,0xa5,0xf8,0xc6,0xda,0xca,0x90,0xca,0x01,0x42,0x9d,
     524                      0x8b,0x0c,0x73,0x43,0x75,0x05,0x94,0xde,0x24,0xb3,0x80,0x34,0xe5,0x2c,0xdc,0x9b,
     525                      0x3f,0xca,0x33,0x45,0xd0,0xdb,0x5f,0xf5,0x52,0xc3,0x21,0xda,0xe2,0x22,0x72,0x6b,
     526                      0x3e,0xd0,0x5b,0xa8,0x87,0x8c,0x06,0x5d,0x0f,0xdd,0x09,0x19,0x93,0xd0,0xb9,0xfc,
     527                      0x8b,0x0f,0x84,0x60,0x33,0x1c,0x9b,0x45,0xf1,0xf0,0xa3,0x94,0x3a,0x12,0x77,0x33,
     528                      0x4d,0x44,0x78,0x28,0x3c,0x9e,0xfd,0x65,0x57,0x16,0x94,0x6b,0xfb,0x59,0xd0,0xc8,
     529                      0x22,0x36,0xdb,0xd2,0x63,0x98,0x43,0xa1,0x04,0x87,0x86,0xf7,0xa6,0x26,0xbb,0xd6,
     530                      0x59,0x4d,0xbf,0x6a,0x2e,0xaa,0x2b,0xef,0xe6,0x78,0xb6,0x4e,0xe0,0x2f,0xdc,0x7c,
     531                      0xbe,0x57,0x19,0x32,0x7e,0x2a,0xd0,0xb8,0xba,0x29,0x00,0x3c,0x52,0x7d,0xa8,0x49,
     532                      0x3b,0x2d,0xeb,0x25,0x49,0xfa,0xa3,0xaa,0x39,0xa7,0xc5,0xa7,0x50,0x11,0x36,0xfb,
     533                      0xc6,0x67,0x4a,0xf5,0xa5,0x12,0x65,0x7e,0xb0,0xdf,0xaf,0x4e,0xb3,0x61,0x7f,0x2f)
     534              );
     535      $returned="";
     536
     537      if($decryptedLength==0 or $decryptedLength>strlen($data))
     538        $decryptedLength=strlen($data);
     539
     540      $key = 0;
     541      for($i=0; $i < 4; $i++)
     542      {
     543        $key = $key ^ (($shutterCount >> ($i*8)) & 0xff);
     544      }
     545      $ci = $xlat[0][$serialNumber & 0xff];
     546      $cj = $xlat[1][$key];
     547      $ck = 0x60;
     548
     549      for($i=0;$i<$decryptedLength;++$i)
     550      {
     551        $cj+=$ci*$ck++;
     552        $returned.= chr(ord($data{$i}) ^ $cj);
     553      }
     554      return($returned);
     555    }
     556
     557    /**
     558     * return the serialNumber as an integer
     559     */
     560    private function serialNumberInteger()
     561    {
     562      if($this->serialNumber!="")
     563      {
     564        return(0+$this->serialNumber);
     565      }
     566      elseif(preg_match("/.*d50.*/i",MakerNotesSignatures::getExifMaker()))
     567      {
     568        //D50
     569        return(0x22);
     570      }
     571      else
     572      {
     573        //D200, D40X, ...
     574        return(0x60);
     575      }
     576
     577
     578
     579    }
    169580  }
    170581
     582
    171583?>
  • extensions/AMetaData/JpegMetaData/Readers/PentaxReader.class.php

    r4904 r4931  
    4242 *
    4343 *
     44 * ****             All known tags are not implemented !!                   ****
     45 *
     46 *
    4447 * The PentaxReader class is derived from the MakerNotesReader class.
    4548 *
     
    168171           */
    169172          if($values[0]<10)
    170             $returned=($values[0]/3)." EV";
     173            $returned=Array(($values[0]/3)." EV");
    171174          else
    172             $returned=($values[0]-9.5)." EV";
     175            $returned=Array(($values[0]-9.5)." EV");
    173176
    174177          if($values[1]==0)
    175             $returned.=";No extended bracketing";
     178            $returned[]="No extended bracketing";
    176179          else
    177180          {
     
    181184            {
    182185              case 1:
    183                 $returned.=";WB-BA";
     186                $returned[]="WB-BA";
    184187                break;
    185188              case 2:
    186                 $returned.=";WB-GM";
     189                $returned[]="WB-GM";
    187190                break;
    188191              case 3:
    189                 $returned.=";Saturation";
     192                $returned[]="Saturation";
    190193                break;
    191194              case 4:
    192                 $returned.=";Sharpness";
     195                $returned[]="Sharpness";
    193196                break;
    194197              case 5:
    195                 $returned.=";Contrast";
     198                $returned[]="Contrast";
    196199                break;
    197200              default:
    198                 $returned.=";Unknown;".ConvertData::toHexDump($type, ByteType::USHORT);
     201                $returned[]="Unknown;".ConvertData::toHexDump($type, ByteType::USHORT);
    199202                break;
    200203            }
    201             $returned.=", ".$range;
     204            $returned[]=$range;
    202205          }
    203206          break;
  • extensions/AMetaData/JpegMetaData/Readers/XmpReader.class.php

    r4904 r4931  
    366366        case "dc:source":
    367367        case "dc:title":
     368        case "dc:CreatorTool":
    368369        case "xmp:BaseURL":
    369370        case "xmp:CreatorTool":
     
    395396        case "photoshop:State":
    396397        case "photoshop:TransmissionReference":
     398        case "photoshop:ICCProfile":
    397399        case "crs:AutoBrightness":
    398400        case "crs:AutoContrast":
  • extensions/AMetaData/JpegMetaData/TagDefinitions/IfdTags.class.php

    r4904 r4931  
    417417      0x0120 => Array(
    418418        'tagName'     => "FreeOffsets",
    419         'schema'      => "",
     419        'schema'      => "tiff",
    420420        'translatable'=> false,
    421421        'combiTag'    => 0,
     
    426426      0x0121 => Array(
    427427        'tagName'     => "FreeByteCounts",
    428         'schema'      => "",
     428        'schema'      => "unknown",
    429429        'translatable'=> false,
    430430        'combiTag'    => 0,
     
    451451      0x0123 => Array(
    452452        'tagName'     => "GrayResponseCurve",
    453         'schema'      => "",
     453        'schema'      => "unknown",
    454454        'translatable'=> false,
    455455        'combiTag'    => 0,
     
    460460      0x0124 => Array(
    461461        'tagName'     => "T4Options",
    462         'schema'      => "",
     462        'schema'      => "unknown",
    463463        'translatable'=> false,
    464464        'combiTag'    => 0,
     
    470470      0x0125 => Array(
    471471        'tagName'     => "T6Options",
    472         'schema'      => "",
     472        'schema'      => "unknown",
    473473        'translatable'=> false,
    474474        'combiTag'    => 0,
     
    503503      0x012c => Array(
    504504        'tagName'     => "ColorResponseUnit",
    505         'schema'      => "",
     505        'schema'      => "unknown",
    506506        'translatable'=> false,
    507507        'combiTag'    => 0,
     
    592592      0x0201 => Array(
    593593        'tagName'     => "JPEGInterchangeFormat",
    594         'schema'      => Array("tiff", "IFD1", "MAKERNOTES", "IFD2"),
     594        'schema'      => "tiff",
    595595        'translatable'=> false,
    596596        'combiTag'    => 0,
     
    601601      0x0202 => Array(
    602602        'tagName'     => "JPEGInterchangeFormatLength",
    603         'schema'      => Array("tiff", "IFD1", "MAKERNOTES", "IFD2"),
     603        'schema'      => "tiff",
    604604        'translatable'=> false,
    605605        'combiTag'    => 0,
     
    721721      0x8568 => Array(
    722722        'tagName'     => "AFCP_IPTC",
    723         'schema'      => "",
     723        'schema'      => "unknown",
    724724        'translatable'=> false,
    725725        'combiTag'    => 0,
     
    730730      0x8769 => Array(
    731731        'tagName'     => "Exif IFD Pointer",
    732         'schema'      => "",
    733         'translatable'=> false,
    734         'combiTag'    => 0,
    735         'implemented' => true
     732        'schema'      => "tiff",
     733        'translatable'=> false,
     734        'combiTag'    => 0,
     735        'implemented' => false
    736736      ), // < Exif IFD Pointer
    737737
     
    739739      0x8773 => Array(
    740740        'tagName'     => "ICC_Profile",
    741         'schema'      => "",
     741        'schema'      => "unknown",
    742742        'translatable'=> false,
    743743        'combiTag'    => 0,
     
    778778      0x8825 => Array(
    779779        'tagName'     => "GPS IFD Pointer",
    780         'schema'      => "",
    781         'translatable'=> false,
    782         'combiTag'    => 0,
    783         'implemented' => true
     780        'schema'      => "tiff",
     781        'translatable'=> false,
     782        'combiTag'    => 0,
     783        'implemented' => false
    784784      ), // < GPS IFD Pointer
    785785
     
    10971097      0x9216 => Array(
    10981098        'tagName'     => "TIFF-EPStandardID",
    1099         'schema'      => "",
     1099        'schema'      => "unknown",
    11001100        'translatable'=> false,
    11011101        'combiTag'    => 0,
     
    11101110        'translatable'=> false,
    11111111        'combiTag'    => 0,
    1112         'implemented' => true
     1112        'implemented' => false //implemented but can't be used as a tag value
    11131113      ), // < MakerNote
    11141114
     
    12481248      0xA005 => Array(
    12491249        'tagName'     => "Interoperability IFD Pointer",
    1250         'schema'      => "",
     1250        'schema'      => "exif",
    12511251        'translatable'=> false,
    12521252        'combiTag'    => 0,
     
    12661266      0xA20C => Array(
    12671267        'tagName'     => "SpatialFrequencyResponse",
    1268         'schema'      => "",
     1268        'schema'      => "exif",
    12691269        'translatable'=> false,
    12701270        'combiTag'    => 0,
     
    12761276      0xA20D => Array(
    12771277        'tagName'     => "Noise",
    1278         'schema'      => "",
     1278        'schema'      => "exif",
    12791279        'translatable'=> false,
    12801280        'combiTag'    => 0,
  • extensions/AMetaData/JpegMetaData/TagDefinitions/NikonTags.class.php

    r4904 r4931  
    4444 *
    4545 *
    46  * Pentax values from
     46 * Nikon values from
    4747 *  - Exiftool by Phil Harvey    => http://www.sno.phy.queensu.ca/~phil/exiftool/
    4848 *                                  http://owl.phy.queensu.ca/~phil/exiftool/TagNames
     
    6060    protected $label = "Nikon specific tags";
    6161    protected $tags = Array(
     62      /*
     63       * tags with defined values
     64       */
     65
     66      // MakerNoteVersion, tag 0x0001
     67      0x0001 => Array(
     68        'tagName'     => "MakerNoteVersion",
     69        'schema'      => "Nikon",
     70        'translatable'=> false,
     71        'combiTag'    => 0,
     72        'implemented' => false,
     73      ), // < MakerNoteVersion
     74
     75      // ISO, tag 0x0002
     76      0x0002 => Array(
     77        'tagName'     => "ISO",
     78        'schema'      => "Nikon",
     79        'translatable'=> false,
     80        'combiTag'    => 0,
     81        'implemented' => false,
     82      ), // < ISO
     83
     84      // ColorMode, tag 0x0003
     85      0x0003 => Array(
     86        'tagName'     => "ColorMode",
     87        'schema'      => "Nikon",
     88        'translatable'=> false,
     89        'combiTag'    => 0,
     90        'implemented' => true,
     91      ), // < ColorMode
     92
     93      // , tag 0x0004
     94      0x0004 => Array(
     95        'tagName'     => "Quality",
     96        'schema'      => "Nikon",
     97        'translatable'=> false,
     98        'combiTag'    => 0,
     99        'implemented' => true,
     100      ), // < Quality
     101
     102      // WhiteBalance, tag 0x0005
     103      0x0005 => Array(
     104        'tagName'     => "WhiteBalance",
     105        'schema'      => "Nikon",
     106        'translatable'=> false,
     107        'combiTag'    => 0,
     108        'implemented' => true,
     109      ), // < WhiteBalance
     110
     111      // Sharpness, tag 0x0006
     112      0x0006 => Array(
     113        'tagName'     => "Sharpness",
     114        'schema'      => "Nikon",
     115        'translatable'=> false,
     116        'combiTag'    => 0,
     117        'implemented' => true,
     118      ), // < Sharpness
     119
     120      // FocusMode, tag 0x0007
     121      0x0007 => Array(
     122        'tagName'     => "FocusMode",
     123        'schema'      => "Nikon",
     124        'translatable'=> false,
     125        'combiTag'    => 0,
     126        'implemented' => true,
     127      ), // < FocusMode
     128
     129      // FlashSetting, tag 0x0008
     130      0x0008 => Array(
     131        'tagName'     => "FlashSetting",
     132        'schema'      => "Nikon",
     133        'translatable'=> false,
     134        'combiTag'    => 0,
     135        'implemented' => true,
     136      ), // < FlashSetting
     137
     138      // FlashType, tag 0x0009
     139      0x0009 => Array(
     140        'tagName'     => "FlashType",
     141        'schema'      => "Nikon",
     142        'translatable'=> false,
     143        'combiTag'    => 0,
     144        'implemented' => true,
     145      ), // < FlashType
     146
     147      // WhiteBalanceFineTune, tag 0x000b
     148      0x000b => Array(
     149        'tagName'     => "WhiteBalanceFineTune",
     150        'schema'      => "Nikon",
     151        'translatable'=> false,
     152        'combiTag'    => 0,
     153        'implemented' => false,
     154      ), // < WhiteBalanceFineTune
     155
     156      // WB_RBLevels, tag 0x000c
     157      0x000c => Array(
     158        'tagName'     => "WB_RBLevels",
     159        'schema'      => "Nikon",
     160        'translatable'=> false,
     161        'combiTag'    => 0,
     162        'implemented' => false,
     163      ), // < WB_RBLevels
     164
     165      // ProgramShift, tag 0x000d
     166      0x000d => Array(
     167        'tagName'     => "ProgramShift",
     168        'schema'      => "Nikon",
     169        'translatable'=> false,
     170        'combiTag'    => 0,
     171        'implemented' => false,
     172      ), // < ProgramShift
     173
     174      // ExposureDifference, tag 0x000e
     175      0x000e => Array(
     176        'tagName'     => "ExposureDifference",
     177        'schema'      => "Nikon",
     178        'translatable'=> false,
     179        'combiTag'    => 0,
     180        'implemented' => false,
     181      ), // < ExposureDifference
     182
     183      // ISOSelection, tag 0x000f
     184      0x000f => Array(
     185        'tagName'     => "ISOSelection",
     186        'schema'      => "Nikon",
     187        'translatable'=> false,
     188        'combiTag'    => 0,
     189        'implemented' => true,
     190      ), // < ISOSelection
     191
     192      // DataDump, tag 0x0010
     193      0x0010 => Array(
     194        'tagName'     => "DataDump",
     195        'schema'      => "Nikon",
     196        'translatable'=> false,
     197        'combiTag'    => 0,
     198        'implemented' => false,
     199      ), // < DataDump
     200
     201      // NikonPreview, tag 0x0011
     202      0x0011 => Array(
     203        'tagName'     => "NikonPreview",
     204        'schema'      => "Nikon",
     205        'translatable'=> false,
     206        'combiTag'    => 0,
     207        'implemented' => false,
     208      ), // < NikonPreview
     209
     210      // FlashExposureComp, tag 0x0012
     211      0x0012 => Array(
     212        'tagName'     => "FlashExposureComp",
     213        'schema'      => "Nikon",
     214        'translatable'=> false,
     215        'combiTag'    => 0,
     216        'implemented' => false,
     217      ), // < FlashExposureComp
     218
     219      // ISOSetting, tag 0x0013
     220      0x0013 => Array(
     221        'tagName'     => "ISOSetting",
     222        'schema'      => "Nikon",
     223        'translatable'=> false,
     224        'combiTag'    => 0,
     225        'implemented' => false,
     226      ), // < ISOSetting
     227
     228      // ColorBalanceA, tag 0x0014
     229      0x0014 => Array(
     230        'tagName'     => "ColorBalanceA",
     231        'schema'      => "Nikon",
     232        'translatable'=> false,
     233        'combiTag'    => 0,
     234        'implemented' => false,
     235      ), // < ColorBalanceA
     236
     237      // ImageBoundary, tag 0x0016
     238      0x0016 => Array(
     239        'tagName'     => "ImageBoundary",
     240        'schema'      => "Nikon",
     241        'translatable'=> false,
     242        'combiTag'    => 0,
     243        'implemented' => false,
     244      ), // < ImageBoundary
     245
     246      // FlashExposureComp, tag 0x0017
     247      0x0017 => Array(
     248        'tagName'     => "FlashExposureComp",
     249        'schema'      => "Nikon",
     250        'translatable'=> false,
     251        'combiTag'    => 0,
     252        'implemented' => false,
     253      ), // < FlashExposureComp
     254
     255      // FlashExposureBracketValue, tag 0x0018
     256      0x0018 => Array(
     257        'tagName'     => "FlashExposureBracketValue",
     258        'schema'      => "Nikon",
     259        'translatable'=> false,
     260        'combiTag'    => 0,
     261        'implemented' => false,
     262      ), // < FlashExposureBracketValue
     263
     264      // ExposureBracketValue, tag 0x0019
     265      0x0019 => Array(
     266        'tagName'     => "ExposureBracketValue",
     267        'schema'      => "Nikon",
     268        'translatable'=> false,
     269        'combiTag'    => 0,
     270        'implemented' => false,
     271      ), // < ExposureBracketValue
     272
     273      // ImageProcessing, tag 0x001a
     274      0x001a => Array(
     275        'tagName'     => "ImageProcessing",
     276        'schema'      => "Nikon",
     277        'translatable'=> false,
     278        'combiTag'    => 0,
     279        'implemented' => false,
     280      ), // < ImageProcessing
     281
     282      // CropHiSpeed, tag 0x001b
     283      0x001b => Array(
     284        'tagName'     => "CropHiSpeed",
     285        'schema'      => "Nikon",
     286        'translatable'=> false,
     287        'combiTag'    => 0,
     288        'implemented' => false,
     289      ), // < CropHiSpeed
     290
     291      // ExposureTuning, tag 0x001c
     292      0x001c => Array(
     293        'tagName'     => "ExposureTuning",
     294        'schema'      => "Nikon",
     295        'translatable'=> false,
     296        'combiTag'    => 0,
     297        'implemented' => false,
     298      ), // < ExposureTuning
     299
     300      // SerialNumber, tag 0x001d
     301      0x001d => Array(
     302        'tagName'     => "SerialNumber",
     303        'schema'      => "Nikon",
     304        'translatable'=> false,
     305        'combiTag'    => 0,
     306        'implemented' => true,
     307      ), // < SerialNumber
     308
     309      // ColorSpace, tag 0x001e
     310      0x001e => Array(
     311        'tagName'     => "ColorSpace",
     312        'schema'      => "Nikon",
     313        'translatable'=> false,
     314        'combiTag'    => 0,
     315        'implemented' => true,
     316        'tagValues'   => Array(
     317          1 => "sRGB",
     318          2 => "Adobe RGB"
     319        )
     320      ), // < ColorSpace
     321
     322      // VRInfo, tag 0x001f
     323      0x001f => Array(
     324        'tagName'     => "VRInfo",
     325        'schema'      => "Nikon",
     326        'translatable'=> true,
     327        'combiTag'    => 0,
     328        'implemented' => true,
     329      ), // < VRInfo
     330
     331      // ImageAuthentication, tag 0x0020
     332      0x0020 => Array(
     333        'tagName'     => "ImageAuthentication",
     334        'schema'      => "Nikon",
     335        'translatable'=> true,
     336        'combiTag'    => 0,
     337        'implemented' => true,
     338        'tagValues'   => Array(
     339          0 => "Off",
     340          1 => "On"
     341        )
     342      ), // < ImageAuthentication
     343
     344      // ActiveD-Lighting, tag 0x0022
     345      0x0022 => Array(
     346        'tagName'     => "ActiveD-Lighting",
     347        'schema'      => "Nikon",
     348        'translatable'=> true,
     349        'combiTag'    => 0,
     350        'implemented' => true,
     351        'tagValues'   => Array(
     352          0 => "Off",
     353          1 => "Low",
     354          3 => "Normal",
     355          5 => "High",
     356          0xffff => "Auto"
     357        )
     358      ), // < ActiveD-Lighting
     359
     360      // PictureControl, tag 0x0023
     361      0x0023 => Array(
     362        'tagName'     => "PictureControl",
     363        'schema'      => "Nikon",
     364        'translatable'=> false,
     365        'combiTag'    => 0,
     366        'implemented' => false,
     367      ), // < PictureControl
     368
     369      // WorldTime, tag 0x0024
     370      0x0024 => Array(
     371        'tagName'     => "WorldTime",
     372        'schema'      => "Nikon",
     373        'translatable'=> false,
     374        'combiTag'    => 0,
     375        'implemented' => false,
     376      ), // < WorldTime
     377
     378      // ISOInfo, tag 0x0025
     379      0x0025 => Array(
     380        'tagName'     => "ISOInfo",
     381        'schema'      => "Nikon",
     382        'translatable'=> false,
     383        'combiTag'    => 0,
     384        'implemented' => false,
     385      ), // < ISOInfo
     386
     387      // VignetteControl, tag 0x002a
     388      0x002a => Array(
     389        'tagName'     => "VignetteControl",
     390        'schema'      => "Nikon",
     391        'translatable'=> true,
     392        'combiTag'    => 0,
     393        'implemented' => true,
     394        'tagValues'   => Array(
     395          0 => "Off",
     396          1 => "Low",
     397          3 => "Normal",
     398          5 => "High",
     399        )
     400      ), // < VignetteControl
     401
     402      // DistortInfo, tag 0x002b
     403      0x002b => Array(
     404        'tagName'     => "DistortInfo",
     405        'schema'      => "Nikon",
     406        'translatable'=> false,
     407        'combiTag'    => 0,
     408        'implemented' => false,
     409      ), // < DistortInfo
     410
     411      // ImageAdjustment, tag 0x0080
     412      0x0080 => Array(
     413        'tagName'     => "ImageAdjustment",
     414        'schema'      => "Nikon",
     415        'translatable'=> false,
     416        'combiTag'    => 0,
     417        'implemented' => true,
     418      ), // < ImageAdjustment
     419
     420      // ToneComp, tag 0x0081
     421      0x0081 => Array(
     422        'tagName'     => "ToneComp",
     423        'schema'      => "Nikon",
     424        'translatable'=> false,
     425        'combiTag'    => 0,
     426        'implemented' => true,
     427      ), // < ToneComp
     428
     429      // AuxiliaryLens, tag 0x0082
     430      0x0082 => Array(
     431        'tagName'     => "AuxiliaryLens",
     432        'schema'      => "Nikon",
     433        'translatable'=> false,
     434        'combiTag'    => 0,
     435        'implemented' => true,
     436      ), // < AuxiliaryLens
     437
     438      // LensType, tag 0x0083
     439      0x0083 => Array(
     440        'tagName'     => "LensType",
     441        'schema'      => "Nikon",
     442        'translatable'=> false,
     443        'combiTag'    => 0,
     444        'implemented' => true,
     445        'tagValues.specialValues' => Array(
     446          0x0001 => "MF", //b0001
     447          0x0002 => "D",  //b0010
     448          0x0004 => "G",  //b0100
     449          0x0008 => "VR"  //b1000
     450        ),
     451      ), // < LensType
     452
     453      // Lens, tag 0x0084
     454      0x0084 => Array(
     455        'tagName'     => "Lens",
     456        'schema'      => "Nikon",
     457        'translatable'=> false,
     458        'combiTag'    => 0,
     459        'implemented' => true,
     460      ), // < Lens
     461
     462      // ManualFocusDistance, tag 0x0085
     463      0x0085 => Array(
     464        'tagName'     => "ManualFocusDistance",
     465        'schema'      => "Nikon",
     466        'translatable'=> false,
     467        'combiTag'    => 0,
     468        'implemented' => false,
     469      ), // < ManualFocusDistance
     470
     471      // DigitalZoom, tag 0x0086
     472      0x0086 => Array(
     473        'tagName'     => "DigitalZoom",
     474        'schema'      => "Nikon",
     475        'translatable'=> false,
     476        'combiTag'    => 0,
     477        'implemented' => true,
     478      ), // < DigitalZoom
     479
     480      // FlashMode, tag 0x0087
     481      0x0087 => Array(
     482        'tagName'     => "FlashMode",
     483        'schema'      => "Nikon",
     484        'translatable'=> true,
     485        'combiTag'    => 0,
     486        'implemented' => true,
     487        'tagValues'   => Array(
     488          0 => "Did Not Fire",
     489          1 => "Fired, Manual",
     490          3 => "Not Ready",
     491          7 => "Fired, External",
     492          8 => "Fired, Commander Mode",
     493          9 => "Fired, TTL Mode",
     494        )
     495      ), // < FlashMode
     496
     497      // AFInfo, tag 0x0088
     498      0x0088 => Array(
     499        'tagName'     => "AFInfo",
     500        'schema'      => "Nikon",
     501        'translatable'=> true,
     502        'combiTag'    => 0,
     503        'implemented' => true,
     504        'tagValues.specialValues' => Array(
     505          0 => Array(
     506                  0x0 => "Single Area",
     507                  0x1 => "Dynamic Area",
     508                  0x2 => "Dynamic Area (closest subject)",
     509                  0x3 => "Group Dynamic",
     510                  0x4 => "Single Area (wide)",
     511                  0x5 => "Dynamic Area (wide)",
     512                ),
     513          1 => Array(
     514                  0x0 => "Center",
     515                  0x1 => "Top",
     516                  0x2 => "Bottom",
     517                  0x3 => "Mid-left",
     518                  0x4 => "Mid-right",
     519                  0x5 => "Upper-left",
     520                  0x6 => "Upper-right",
     521                  0x7 => "Lower-left",
     522                  0x8 => "Lower-right",
     523                  0x9 => "Far Left",
     524                  0xA => "Far Right",
     525                ),
     526          2 => Array(
     527                  0x0001 => "Center",
     528                  0x0002 => "Top",
     529                  0x0004 => "Bottom",
     530                  0x0008 => "Mid-left",
     531                  0x0010 => "Mid-right",
     532                  0x0020 => "Upper-left",
     533                  0x0040 => "Upper-right",
     534                  0x0080 => "Lower-left",
     535                  0x0100 => "Lower-right",
     536                  0x0200 => "Far Left",
     537                  0x0400 => "Far Right",
     538                  0x07ff => "All 11 Points"
     539                )
     540        )
     541      ), // <
     542
     543      // ShootingMode, tag 0x0089
     544      0x0089 => Array(
     545        'tagName'     => "ShootingMode",
     546        'schema'      => "Nikon",
     547        'translatable'=> true,
     548        'combiTag'    => 0,
     549        'implemented' => true,
     550        'tagValues.specialValues' => Array(
     551            0x00 => "Single frame",                            //special value
     552            0x01 => "Continuous",                              //b00000001(bit0)
     553            0x02 => "Delay",                                   //b00000010
     554            0x04 => "PC Control",                              //b00000100
     555            0x08 => "?",                                       //b00001000
     556            0x10 => "Exposure Bracketing",                     //b00010000
     557            0x20 => Array(0=>"Auto ISO", 1=>"Unused LE-NR Slowdown"),//b00100000(bit5)
     558            0x40 => "White-Balance Bracketing",                //b01000000
     559            0x80 => "IR Control",                              //b10000000(bit7)
     560        ),
     561      ), // < ShootingMode
     562
     563      // LensFStops, tag 0x008b
     564      0x008b => Array(
     565        'tagName'     => "LensFStops",
     566        'schema'      => "Nikon",
     567        'translatable'=> false,
     568        'combiTag'    => 0,
     569        'implemented' => false,
     570      ), // < LensFStops
     571
     572      // ContrastCurve, tag 0x008c
     573      0x008c => Array(
     574        'tagName'     => "ContrastCurve",
     575        'schema'      => "Nikon",
     576        'translatable'=> false,
     577        'combiTag'    => 0,
     578        'implemented' => false,
     579      ), // < ContrastCurve
     580
     581      // ColorHue, tag 0x008d
     582      0x008d => Array(
     583        'tagName'     => "ColorHue",
     584        'schema'      => "Nikon",
     585        'translatable'=> false,
     586        'combiTag'    => 0,
     587        'implemented' => true,
     588      ), // < ColorHue
     589
     590      // SceneMode, tag 0x008f
     591      0x008f => Array(
     592        'tagName'     => "SceneMode",
     593        'schema'      => "Nikon",
     594        'translatable'=> false,
     595        'combiTag'    => 0,
     596        'implemented' => true,
     597      ), // < SceneMode
     598
     599      // LightSource, tag 0x0090
     600      0x0090 => Array(
     601        'tagName'     => "LightSource",
     602        'schema'      => "Nikon",
     603        'translatable'=> false,
     604        'combiTag'    => 0,
     605        'implemented' => true,
     606      ), // < LightSource
     607
     608      // ShotInfo, tag 0x0091
     609      0x0091 => Array(
     610        'tagName'     => "ShotInfo",
     611        'schema'      => "Nikon",
     612        'translatable'=> false,
     613        'combiTag'    => 0,
     614        'implemented' => false,
     615      ), // <
     616
     617      // HueAdjustment, tag 0x0092
     618      0x0092 => Array(
     619        'tagName'     => "HueAdjustment",
     620        'schema'      => "Nikon",
     621        'translatable'=> false,
     622        'combiTag'    => 0,
     623        'implemented' => true,
     624      ), // < HueAdjustment
     625
     626      // NEFCompression, tag 0x0093
     627      0x0093 => Array(
     628        'tagName'     => "NEFCompression",
     629        'schema'      => "Nikon",
     630        'translatable'=> false,
     631        'combiTag'    => 0,
     632        'implemented' => true,
     633        'tagValues' => Array(
     634          0x01 => "Lossy (type 1)",
     635          0x02 => "Uncompressed",
     636          0x03 => "Lossless",
     637          0x04 => "Lossy (type 2)",
     638        ),
     639      ), // < NEFCompression
     640
     641      // Saturation, tag 0x0094
     642      0x0094 => Array(
     643        'tagName'     => "Saturation",
     644        'schema'      => "Nikon",
     645        'translatable'=> false,
     646        'combiTag'    => 0,
     647        'implemented' => false,
     648      ), // < Saturation
     649
     650      // NoiseReduction, tag 0x0095
     651      0x0095 => Array(
     652        'tagName'     => "NoiseReduction",
     653        'schema'      => "Nikon",
     654        'translatable'=> false,
     655        'combiTag'    => 0,
     656        'implemented' => true,
     657      ), // < NoiseReduction
     658
     659      // LinearizationTable, tag 0x0096
     660      0x0096 => Array(
     661        'tagName'     => "LinearizationTable",
     662        'schema'      => "Nikon",
     663        'translatable'=> false,
     664        'combiTag'    => 0,
     665        'implemented' => false,
     666      ), // < LinearizationTable
     667
     668      // ColorBalance, tag 0x0097
     669      0x0097 => Array(
     670        'tagName'     => "ColorBalance",
     671        'schema'      => "Nikon",
     672        'translatable'=> false,
     673        'combiTag'    => 0,
     674        'implemented' => false,
     675      ), // < ColorBalance
     676
     677      //  LensData, tag 0x0098
     678      0x0098 => Array(
     679        'tagName'     => "LensData",
     680        'schema'      => "Nikon",
     681        'translatable'=> true,
     682        'combiTag'    => 0,
     683        'implemented' => true,
     684        'tagValues.lenses' => Array(
     685          'unknown' => "Unknown lenses",
     686          '01 58 50 50 14 14 02 00' => 'AF Nikkor 50mm f/1.8',
     687          '02 42 44 5C 2A 34 02 00' => 'AF Zoom-Nikkor 35-70mm f/3.3-4.5',
     688          '02 42 44 5C 2A 34 08 00' => 'AF Zoom-Nikkor 35-70mm f/3.3-4.5',
     689          '03 48 5C 81 30 30 02 00' => 'AF Zoom-Nikkor 70-210mm f/4',
     690          '04 48 3C 3C 24 24 03 00' => 'AF Nikkor 28mm f/2.8',
     691          '05 54 50 50 0C 0C 04 00' => 'AF Nikkor 50mm f/1.4',
     692          '06 54 53 53 24 24 06 00' => 'AF Micro-Nikkor 55mm f/2.8',
     693          '07 40 3C 62 2C 34 03 00' => 'AF Zoom-Nikkor 28-85mm f/3.5-4.5',
     694          '08 40 44 6A 2C 34 04 00' => 'AF Zoom-Nikkor 35-105mm f/3.5-4.5',
     695          '09 48 37 37 24 24 04 00' => 'AF Nikkor 24mm f/2.8',
     696          '0A 48 8E 8E 24 24 03 00' => 'AF Nikkor 300mm f/2.8 IF-ED',
     697          '0B 48 7C 7C 24 24 05 00' => 'AF Nikkor 180mm f/2.8 IF-ED',
     698          '0D 40 44 72 2C 34 07 00' => 'AF Zoom-Nikkor 35-135mm f/3.5-4.5',
     699          '0E 48 5C 81 30 30 05 00' => 'AF Zoom-Nikkor 70-210mm f/4',
     700          '0F 58 50 50 14 14 05 00' => 'AF Nikkor 50mm f/1.8 N',
     701          '10 48 8E 8E 30 30 08 00' => 'AF Nikkor 300mm f/4 IF-ED',
     702          '11 48 44 5C 24 24 08 00' => 'AF Zoom-Nikkor 35-70mm f/2.8',
     703          '12 48 5C 81 30 3C 09 00' => 'AF Nikkor 70-210mm f/4-5.6',
     704          '13 42 37 50 2A 34 0B 00' => 'AF Zoom-Nikkor 24-50mm f/3.3-4.5',
     705          '14 48 60 80 24 24 0B 00' => 'AF Zoom-Nikkor 80-200mm f/2.8 ED',
     706          '15 4C 62 62 14 14 0C 00' => 'AF Nikkor 85mm f/1.8',
     707          '17 3C A0 A0 30 30 0F 00' => 'Nikkor 500mm f/4 P ED IF',
     708          '17 3C A0 A0 30 30 11 00' => 'Nikkor 500mm f/4 P ED IF',
     709          '18 40 44 72 2C 34 0E 00' => 'AF Zoom-Nikkor 35-135mm f/3.5-4.5 N',
     710          '1A 54 44 44 18 18 11 00' => 'AF Nikkor 35mm f/2',
     711          '1B 44 5E 8E 34 3C 10 00' => 'AF Zoom-Nikkor 75-300mm f/4.5-5.6',
     712          '1C 48 30 30 24 24 12 00' => 'AF Nikkor 20mm f/2.8',
     713          '1D 42 44 5C 2A 34 12 00' => 'AF Zoom-Nikkor 35-70mm f/3.3-4.5 N',
     714          '1E 54 56 56 24 24 13 00' => 'AF Micro-Nikkor 60mm f/2.8',
     715          '1F 54 6A 6A 24 24 14 00' => 'AF Micro-Nikkor 105mm f/2.8',
     716          '20 48 60 80 24 24 15 00' => 'AF Zoom-Nikkor 80-200mm f/2.8 ED',
     717          '21 40 3C 5C 2C 34 16 00' => 'AF Zoom-Nikkor 28-70mm f/3.5-4.5',
     718          '22 48 72 72 18 18 16 00' => 'AF DC-Nikkor 135mm f/2',
     719          '23 30 BE CA 3C 48 17 00' => 'Zoom-Nikkor 1200-1700mm f/5.6-8 P ED IF',
     720          '24 48 60 80 24 24 1A 02' => 'AF Zoom-Nikkor 80-200mm f/2.8D ED',
     721          '25 48 44 5C 24 24 1B 02' => 'AF Zoom-Nikkor 35-70mm f/2.8D',
     722          '25 48 44 5C 24 24 52 02' => 'AF Zoom-Nikkor 35-70mm f/2.8D',
     723          '27 48 8E 8E 24 24 1D 02' => 'AF-I Nikkor 300mm f/2.8D IF-ED',
     724          '27 48 8E 8E 24 24 F1 02' => 'AF-I Nikkor 300mm f/2.8D IF-ED + TC-14E',
     725          '27 48 8E 8E 24 24 E1 02' => 'AF-I Nikkor 300mm f/2.8D IF-ED + TC-17E',
     726          '27 48 8E 8E 24 24 F2 02' => 'AF-I Nikkor 300mm f/2.8D IF-ED + TC-20E',
     727          '28 3C A6 A6 30 30 1D 02' => 'AF-I Nikkor 600mm f/4D IF-ED',
     728          '28 3C A6 A6 30 30 F1 02' => 'AF-I Nikkor 600mm f/4D IF-ED + TC-14E',
     729          '28 3C A6 A6 30 30 E1 02' => 'AF-I Nikkor 600mm f/4D IF-ED + TC-17E',
     730          '28 3C A6 A6 30 30 F2 02' => 'AF-I Nikkor 600mm f/4D IF-ED + TC-20E',
     731          '2A 54 3C 3C 0C 0C 26 02' => 'AF Nikkor 28mm f/1.4D',
     732          '2B 3C 44 60 30 3C 1F 02' => 'AF Zoom-Nikkor 35-80mm f/4-5.6D',
     733          '2C 48 6A 6A 18 18 27 02' => 'AF DC-Nikkor 105mm f/2D',
     734          '2D 48 80 80 30 30 21 02' => 'AF Micro-Nikkor 200mm f/4D IF-ED',
     735          '2E 48 5C 82 30 3C 28 02' => 'AF Nikkor 70-210mm f/4-5.6D',
     736          '2F 48 30 44 24 24 29 02' => 'AF Zoom-Nikkor 20-35mm f/2.8D IF',  //doublon?
     737          '30 48 98 98 24 24 24 02' => 'AF-I Nikkor 400mm f/2.8D IF-ED',
     738          '30 48 98 98 24 24 F1 02' => 'AF-I Nikkor 400mm f/2.8D IF-ED + TC-14E',
     739          '30 48 98 98 24 24 E1 02' => 'AF-I Nikkor 400mm f/2.8D IF-ED + TC-17E',
     740          '30 48 98 98 24 24 F2 02' => 'AF-I Nikkor 400mm f/2.8D IF-ED + TC-20E',
     741          '31 54 56 56 24 24 25 02' => 'AF Micro-Nikkor 60mm f/2.8D',
     742          '32 54 6A 6A 24 24 35 02' => 'AF Micro-Nikkor 105mm f/2.8D', //doublon?
     743          '33 48 2D 2D 24 24 31 02' => 'AF Nikkor 18mm f/2.8D',
     744          '34 48 29 29 24 24 32 02' => 'AF Fisheye Nikkor 16mm f/2.8D',
     745          '35 3C A0 A0 30 30 33 02' => 'AF-I Nikkor 500mm f/4D IF-ED',
     746          '35 3C A0 A0 30 30 F1 02' => 'AF-I Nikkor 500mm f/4D IF-ED + TC-14E',
     747          '35 3C A0 A0 30 30 E1 02' => 'AF-I Nikkor 500mm f/4D IF-ED + TC-17E',
     748          '35 3C A0 A0 30 30 F2 02' => 'AF-I Nikkor 500mm f/4D IF-ED + TC-20E',
     749          '36 48 37 37 24 24 34 02' => 'AF Nikkor 24mm f/2.8D',
     750          '37 48 30 30 24 24 36 02' => 'AF Nikkor 20mm f/2.8D',
     751          '38 4C 62 62 14 14 37 02' => 'AF Nikkor 85mm f/1.8D',
     752          '3A 40 3C 5C 2C 34 39 02' => 'AF Zoom-Nikkor 28-70mm f/3.5-4.5D',
     753          '3B 48 44 5C 24 24 3A 02' => 'AF Zoom-Nikkor 35-70mm f/2.8D N',
     754          '3C 48 60 80 24 24 3B 02' => 'AF Zoom-Nikkor 80-200mm f/2.8D ED',
     755          '3D 3C 44 60 30 3C 3E 02' => 'AF Zoom-Nikkor 35-80mm f/4-5.6D',
     756          '3E 48 3C 3C 24 24 3D 02' => 'AF Nikkor 28mm f/2.8D',
     757          '3F 40 44 6A 2C 34 45 02' => 'AF Zoom-Nikkor 35-105mm f/3.5-4.5D',
     758          '41 48 7C 7C 24 24 43 02' => 'AF Nikkor 180mm f/2.8D IF-ED',
     759          '42 54 44 44 18 18 44 02' => 'AF Nikkor 35mm f/2D',
     760          '43 54 50 50 0C 0C 46 02' => 'AF Nikkor 50mm f/1.4D',
     761          '44 44 60 80 34 3C 47 02' => 'AF Zoom-Nikkor 80-200mm f/4.5-5.6D',
     762          '45 40 3C 60 2C 3C 48 02' => 'AF Zoom-Nikkor 28-80mm f/3.5-5.6D',
     763          '46 3C 44 60 30 3C 49 02' => 'AF Zoom-Nikkor 35-80mm f/4-5.6D N',
     764          '47 42 37 50 2A 34 4A 02' => 'AF Zoom-Nikkor 24-50mm f/3.3-4.5D',
     765          '48 48 8E 8E 24 24 4B 02' => 'AF-S Nikkor 300mm f/2.8D IF-ED',
     766          '48 48 8E 8E 24 24 F1 02' => 'AF-S Nikkor 300mm f/2.8D IF-ED + TC-14E',
     767          '48 48 8E 8E 24 24 E1 02' => 'AF-S Nikkor 300mm f/2.8D IF-ED + TC-17E',
     768          '48 48 8E 8E 24 24 F2 02' => 'AF-S Nikkor 300mm f/2.8D IF-ED + TC-20E',
     769          '49 3C A6 A6 30 30 4C 02' => 'AF-S Nikkor 600mm f/4D IF-ED',
     770          '49 3C A6 A6 30 30 F1 02' => 'AF-S Nikkor 600mm f/4D IF-ED + TC-14E',
     771          '49 3C A6 A6 30 30 E1 02' => 'AF-S Nikkor 600mm f/4D IF-ED + TC-17E',
     772          '49 3C A6 A6 30 30 F2 02' => 'AF-S Nikkor 600mm f/4D IF-ED + TC-20E',
     773          '4A 54 62 62 0C 0C 4D 02' => 'AF Nikkor 85mm f/1.4D IF',
     774          '4B 3C A0 A0 30 30 4E 02' => 'AF-S Nikkor 500mm f/4D IF-ED',
     775          '4B 3C A0 A0 30 30 F1 02' => 'AF-S Nikkor 500mm f/4D IF-ED + TC-14E',
     776          '4B 3C A0 A0 30 30 E1 02' => 'AF-S Nikkor 500mm f/4D IF-ED + TC-17E',
     777          '4B 3C A0 A0 30 30 F2 02' => 'AF-S Nikkor 500mm f/4D IF-ED + TC-20E',
     778          '4C 40 37 6E 2C 3C 4F 02' => 'AF Zoom-Nikkor 24-120mm f/3.5-5.6D IF',
     779          '4D 40 3C 80 2C 3C 62 02' => 'AF Zoom-Nikkor 28-200mm f/3.5-5.6D IF',
     780          '4E 48 72 72 18 18 51 02' => 'AF DC-Nikkor 135mm f/2D',
     781          '4F 40 37 5C 2C 3C 53 06' => 'IX-Nikkor 24-70mm f/3.5-5.6',
     782          '50 48 56 7C 30 3C 54 06' => 'IX-Nikkor 60-180mm f/4-5.6',
     783          '53 48 60 80 24 24 57 02' => 'AF Zoom-Nikkor 80-200mm f/2.8D ED',
     784          '53 48 60 80 24 24 60 02' => 'AF Zoom-Nikkor 80-200mm f/2.8D ED',
     785          '54 44 5C 7C 34 3C 58 02' => 'AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED',
     786          '56 48 5C 8E 30 3C 5A 02' => 'AF Zoom-Nikkor 70-300mm f/4-5.6D ED',
     787          '59 48 98 98 24 24 5D 02' => 'AF-S Nikkor 400mm f/2.8D IF-ED',
     788          '59 48 98 98 24 24 F1 02' => 'AF-S Nikkor 400mm f/2.8D IF-ED + TC-14E',
     789          '59 48 98 98 24 24 E1 02' => 'AF-S Nikkor 400mm f/2.8D IF-ED + TC-17E',
     790          '59 48 98 98 24 24 F2 02' => 'AF-S Nikkor 400mm f/2.8D IF-ED + TC-20E',
     791          '5A 3C 3E 56 30 3C 5E 06' => 'IX-Nikkor 30-60mm f/4-5.6',
     792          '5B 44 56 7C 34 3C 5F 06' => 'IX-Nikkor 60-180mm f/4.5-5.6',
     793          '5D 48 3C 5C 24 24 63 02' => 'AF-S Zoom-Nikkor 28-70mm f/2.8D IF-ED',
     794          '5E 48 60 80 24 24 64 02' => 'AF-S Zoom-Nikkor 80-200mm f/2.8D IF-ED',
     795          '5F 40 3C 6A 2C 34 65 02' => 'AF Zoom-Nikkor 28-105mm f/3.5-4.5D IF',
     796          '60 40 3C 60 2C 3C 66 02' => 'AF Zoom-Nikkor 28-80mm f/3.5-5.6D',
     797          '61 44 5E 86 34 3C 67 02' => 'AF Zoom-Nikkor 75-240mm f/4.5-5.6D',
     798          '63 48 2B 44 24 24 68 02' => 'AF-S Nikkor 17-35mm f/2.8D IF-ED',
     799          '64 00 62 62 24 24 6A 02' => 'PC Micro-Nikkor 85mm f/2.8D',
     800          '65 44 60 98 34 3C 6B 0A' => 'AF VR Zoom-Nikkor 80-400mm f/4.5-5.6D ED',
     801          '66 40 2D 44 2C 34 6C 02' => 'AF Zoom-Nikkor 18-35mm f/3.5-4.5D IF-ED',
     802          '67 48 37 62 24 30 6D 02' => 'AF Zoom-Nikkor 24-85mm f/2.8-4D IF',
     803          '68 42 3C 60 2A 3C 6E 06' => 'AF Zoom-Nikkor 28-80mm f/3.3-5.6G',
     804          '69 48 5C 8E 30 3C 6F 06' => 'AF Zoom-Nikkor 70-300mm f/4-5.6G',
     805          '6A 48 8E 8E 30 30 70 02' => 'AF-S Nikkor 300mm f/4D IF-ED',
     806          '6B 48 24 24 24 24 71 02' => 'AF Nikkor ED 14mm f/2.8D',
     807          '6D 48 8E 8E 24 24 73 02' => 'AF-S Nikkor 300mm f/2.8D IF-ED II',
     808          '6E 48 98 98 24 24 74 02' => 'AF-S Nikkor 400mm f/2.8D IF-ED II',
     809          '6F 3C A0 A0 30 30 75 02' => 'AF-S Nikkor 500mm f/4D IF-ED II',
     810          '70 3C A6 A6 30 30 76 02' => 'AF-S Nikkor 600mm f/4D IF-ED II',
     811          '72 48 4C 4C 24 24 77 00' => 'Nikkor 45mm f/2.8 P',
     812          '74 40 37 62 2C 34 78 06' => 'AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED',
     813          '75 40 3C 68 2C 3C 79 06' => 'AF Zoom-Nikkor 28-100mm f/3.5-5.6G',
     814          '76 58 50 50 14 14 7A 02' => 'AF Nikkor 50mm f/1.8D',
     815          '77 48 5C 80 24 24 7B 0E' => 'AF-S VR Zoom-Nikkor 70-200mm f/2.8G IF-ED',
     816          '78 40 37 6E 2C 3C 7C 0E' => 'AF-S VR Zoom-Nikkor 24-120mm f/3.5-5.6G IF-ED',
     817          '79 40 3C 80 2C 3C 7F 06' => 'AF Zoom-Nikkor 28-200mm f/3.5-5.6G IF-ED',
     818          '7A 3C 1F 37 30 30 7E 06' => 'AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED', //doublon ?
     819          '7B 48 80 98 30 30 80 0E' => 'AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED',
     820          '7D 48 2B 53 24 24 82 06' => 'AF-S DX Zoom-Nikkor 17-55mm f/2.8G IF-ED',
     821          '7F 40 2D 5C 2C 34 84 06' => 'AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED',
     822          '80 48 1A 1A 24 24 85 06' => 'AF DX Fisheye-Nikkor 10.5mm f/2.8G ED',
     823          '81 54 80 80 18 18 86 0E' => 'AF-S VR Nikkor 200mm f/2G IF-ED',
     824          '82 48 8E 8E 24 24 87 0E' => 'AF-S VR Nikkor 300mm f/2.8G IF-ED',
     825          '89 3C 53 80 30 3C 8B 06' => 'AF-S DX Zoom-Nikkor 55-200mm f/4-5.6G ED',
     826          '8A 54 6A 6A 24 24 8C 0E' => 'AF-S VR Micro-Nikkor 105mm f/2.8G IF-ED',
     827          '8B 40 2D 80 2C 3C 8D 0E' => 'AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED',
     828          '8B 40 2D 80 2C 3C FD 0E' => 'AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED (II)',
     829          '8C 40 2D 53 2C 3C 8E 06' => 'AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED',
     830          '8D 44 5C 8E 34 3C 8F 0E' => 'AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED',
     831          '8F 40 2D 72 2C 3C 91 06' => 'AF-S DX Zoom-Nikkor 18-135mm f/3.5-5.6G IF-ED',
     832          '90 3B 53 80 30 3C 92 0E' => 'AF-S DX VR Zoom-Nikkor 55-200mm f/4-5.6G IF-ED',
     833          '92 48 24 37 24 24 94 06' => 'AF-S Zoom-Nikkor 14-24mm f/2.8G ED',
     834          '93 48 37 5C 24 24 95 06' => 'AF-S Zoom-Nikkor 24-70mm f/2.8G ED',
     835          '94 40 2D 53 2C 3C 96 06' => 'AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED II',
     836          '95 4C 37 37 2C 2C 97 02' => 'PC-E Nikkor 24mm f/3.5D ED',
     837          '95 00 37 37 2C 2C 97 06' => 'PC-E Nikkor 24mm f/3.5D ED',
     838          '96 48 98 98 24 24 98 0E' => 'AF-S VR Nikkor 400mm f/2.8G ED',
     839          '97 3C A0 A0 30 30 99 0E' => 'AF-S VR Nikkor 500mm f/4G ED',
     840          '98 3C A6 A6 30 30 9A 0E' => 'AF-S VR Nikkor 600mm f/4G ED',
     841          '99 40 29 62 2C 3C 9B 0E' => 'AF-S DX VR Zoom-Nikkor 16-85mm f/3.5-5.6G ED',
     842          '9A 40 2D 53 2C 3C 9C 0E' => 'AF-S DX VR Zoom-Nikkor 18-55mm f/3.5-5.6G',
     843          '9B 54 4C 4C 24 24 9D 02' => 'PC-E Micro Nikkor 45mm f/2.8D ED',
     844          '9B 00 4C 4C 24 24 9D 06' => 'PC-E Micro Nikkor 45mm f/2.8D ED',
     845          '9C 54 56 56 24 24 9E 06' => 'AF-S Micro Nikkor 60mm f/2.8G ED',
     846          '9D 54 62 62 24 24 9F 02' => 'PC-E Micro Nikkor 85mm f/2.8D',
     847          '9D 00 62 62 24 24 9F 06' => 'PC-E Micro Nikkor 85mm f/2.8D',
     848          '9E 40 2D 6A 2C 3C A0 0E' => 'AF-S DX VR Zoom-Nikkor 18-105mm f/3.5-5.6G ED',
     849          '9F 58 44 44 14 14 A1 06' => 'AF-S DX Nikkor 35mm f/1.8G',
     850          'A0 54 50 50 0C 0C A2 06' => 'AF-S Nikkor 50mm f/1.4G',
     851          'A1 40 18 37 2C 34 A3 06' => 'AF-S DX Nikkor 10-24mm f/3.5-4.5G ED',
     852          'A2 48 5C 80 24 24 A4 0E' => 'AF-S Nikkor 70-200mm f/2.8G ED VR II',
     853          '01 00 00 00 00 00 02 00' => 'TC-16A',
     854          '01 00 00 00 00 00 08 00' => 'TC-16A',
     855          '00 00 00 00 00 00 F1 0C' => 'TC-14E [II] or Sigma APO Tele Converter 1.4x EX DG or Kenko Teleplus PRO 300 DG 1.4x',
     856          '00 00 00 00 00 00 F2 18' => 'TC-20E [II] or Sigma APO Tele Converter 2x EX DG or Kenko Teleplus PRO 300 DG 2.0x',
     857          '00 00 00 00 00 00 E1 12' => 'TC-17E II',
     858          'FE 47 00 00 24 24 4B 06' => 'Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye',
     859          '26 48 11 11 30 30 1C 02' => 'Sigma 8mm F4 EX Circular Fisheye',
     860          '79 40 11 11 2C 2C 1C 06' => 'Sigma 8mm F3.5 EX Circular Fisheye',
     861          'DC 48 19 19 24 24 4B 06' => 'Sigma 10mm F2.8 EX DC HSM Fisheye',
     862          '02 3F 24 24 2C 2C 02 00' => 'Sigma 14mm F3.5',
     863          '48 48 24 24 24 24 4B 02' => 'Sigma 14mm F2.8 EX Aspherical HSM',
     864          '26 48 27 27 24 24 1C 02' => 'Sigma 15mm F2.8 EX Diagonal Fisheye',
     865          '26 58 31 31 14 14 1C 02' => 'Sigma 20mm F1.8 EX DG Aspherical RF',
     866          '26 58 37 37 14 14 1C 02' => 'Sigma 24mm F1.8 EX DG Aspherical Macro',
     867          'E1 58 37 37 14 14 1C 02' => 'Sigma 24mm F1.8 EX DG Aspherical Macro',
     868          '02 46 37 37 25 25 02 00' => 'Sigma 24mm F2.8 Super Wide II Macro',
     869          '26 58 3C 3C 14 14 1C 02' => 'Sigma 28mm F1.8 EX DG Aspherical Macro',
     870          '48 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM',
     871          'F8 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM',
     872          'DE 54 50 50 0C 0C 4B 06' => 'Sigma 50mm F1.4 EX DG HSM',
     873          '32 54 50 50 24 24 35 02' => 'Sigma Macro 50mm F2.8 EX DG',
     874          '79 48 5C 5C 24 24 1C 06' => 'Sigma Macro 70mm F2.8 EX DG',
     875          '02 48 65 65 24 24 02 00' => 'Sigma 90mm F2.8 Macro',
     876          '32 54 6A 6A 24 24 35 02' => 'Sigma Macro 105mm F2.8 EX DG', //doublon ?
     877          'E5 54 6A 6A 24 24 35 02' => 'Sigma Macro 105mm F2.8 EX DG',
     878          '48 48 76 76 24 24 4B 06' => 'Sigma 150mm F2.8 EX DG APO Macro HSM',
     879          'F5 48 76 76 24 24 4B 06' => 'Sigma 150mm F2.8 EX DG APO Macro HSM',
     880          '48 4C 7C 7C 2C 2C 4B 02' => 'Sigma 180mm F3.5 EX DG Macro',
     881          '48 4C 7D 7D 2C 2C 4B 02' => 'Sigma APO Macro 180mm F3.5 EX DG HSM',
     882          '48 54 8E 8E 24 24 4B 02' => 'Sigma APO 300mm F2.8 EX DG HSM',
     883          'FB 54 8E 8E 24 24 4B 02' => 'Sigma APO 300mm F2.8 EX DG HSM',
     884          '26 48 8E 8E 30 30 1C 02' => 'Sigma APO Tele Macro 300mm F4',
     885          '02 2F 98 98 3D 3D 02 00' => 'Sigma 400mm F5.6 APO',
     886          '02 37 A0 A0 34 34 02 00' => 'Sigma APO 500mm F4.5',
     887          '48 44 A0 A0 34 34 4B 02' => 'Sigma APO 500mm F4.5 EX HSM',
     888          '48 3C B0 B0 3C 3C 4B 02' => 'Sigma APO 800mm F5.6 EX HSM',
     889          'A1 41 19 31 2C 2C 4B 06' => 'Sigma 10-20mm F3.5 EX DC HSM',
     890          '48 3C 19 31 30 3C 4B 06' => 'Sigma 10-20mm F4-5.6 EX DC HSM',
     891          'F9 3C 19 31 30 3C 4B 06' => 'Sigma 10-20mm F4-5.6 EX DC HSM',
     892          '48 38 1F 37 34 3C 4B 06' => 'Sigma 12-24mm F4.5-5.6 EX DG Aspherical HSM',
     893          'F0 38 1F 37 34 3C 4B 06' => 'Sigma 12-24mm F4.5-5.6 EX DG Aspherical HSM',
     894          '26 40 27 3F 2C 34 1C 02' => 'Sigma 15-30mm F3.5-4.5 EX DG Aspherical DF',
     895          '48 48 2B 44 24 30 4B 06' => 'Sigma 17-35mm F2.8-4 EX DG  Aspherical HSM',
     896          '26 54 2B 44 24 30 1C 02' => 'Sigma 17-35mm F2.8-4 EX Aspherical',
     897          '7A 47 2B 5C 24 34 4B 06' => 'Sigma 17-70mm F2.8-4.5 DC Macro Asp. IF HSM',
     898          '7A 48 2B 5C 24 34 4B 06' => 'Sigma 17-70mm F2.8-4.5 DC Macro Asp. IF HSM',
     899          '7F 48 2B 5C 24 34 1C 06' => 'Sigma 17-70mm F2.8-4.5 DC Macro Asp. IF',
     900          '26 40 2D 44 2B 34 1C 02' => 'Sigma 18-35 F3.5-4.5 Aspherical',
     901          '26 48 2D 50 24 24 1C 06' => 'Sigma 18-50mm F2.8 EX DC',
     902          '7F 48 2D 50 24 24 1C 06' => 'Sigma 18-50mm F2.8 EX DC Macro',
     903          '7A 48 2D 50 24 24 4B 06' => 'Sigma 18-50mm F2.8 EX DC Macro',
     904          '26 40 2D 50 2C 3C 1C 06' => 'Sigma 18-50mm F3.5-5.6 DC',
     905          '7A 40 2D 50 2C 3C 4B 06' => 'Sigma 18-50mm F3.5-5.6 DC HSM',
     906          '26 40 2D 70 2B 3C 1C 06' => 'Sigma 18-125mm F3.5-5.6 DC',
     907          'CD 3D 2D 70 2E 3C 4B 0E' => 'Sigma 18-125mm F3.8-5.6 DC OS HSM',
     908          '26 40 2D 80 2C 40 1C 06' => 'Sigma 18-200mm F3.5-6.3 DC',
     909          'ED 40 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 DC OS HSM',
     910          'A5 40 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC OS HSM',
     911          '26 48 31 49 24 24 1C 02' => 'Sigma 20-40mm F2.8',
     912          '26 48 37 56 24 24 1C 02' => 'Sigma 24-60mm F2.8 EX DG',
     913          'B6 48 37 56 24 24 1C 02' => 'Sigma 24-60mm F2.8 EX DG',
     914          'A6 48 37 5C 24 24 4B 06' => 'Sigma 24-70mm F2.8 IF EX DG HSM',
     915          '26 54 37 5C 24 24 1C 02' => 'Sigma 24-70mm F2.8 EX DG Macro',
     916          '67 54 37 5C 24 24 1C 02' => 'Sigma 24-70mm F2.8 EX DG Macro',
     917          'E9 54 37 5C 24 24 1C 02' => 'Sigma 24-70mm F2.8 EX DG Macro',
     918          '26 40 37 5C 2C 3C 1C 02' => 'Sigma 24-70mm F3.5-5.6 Aspherical HF',
     919          '26 54 37 73 24 34 1C 02' => 'Sigma 24-135mm F2.8-4.5',
     920          '02 46 3C 5C 25 25 02 00' => 'Sigma 28-70mm F2.8',
     921          '26 54 3C 5C 24 24 1C 02' => 'Sigma 28-70mm F2.8 EX',
     922          '26 48 3C 5C 24 24 1C 06' => 'Sigma 28-70mm F2.8 EX DG',
     923          '26 48 3C 5C 24 30 1C 02' => 'Sigma 28-70mm F2.8-4 DG',
     924          '02 3F 3C 5C 2D 35 02 00' => 'Sigma 28-70mm F3.5-4.5 UC',
     925          '26 40 3C 60 2C 3C 1C 02' => 'Sigma 28-80mm F3.5-5.6 Mini Zoom Macro II Aspherical',
     926          '26 40 3C 65 2C 3C 1C 02' => 'Sigma 28-90mm F3.5-5.6 Macro',
     927          '26 48 3C 6A 24 30 1C 02' => 'Sigma 28-105mm F2.8-4 Aspherical',
     928          '26 3E 3C 6A 2E 3C 1C 02' => 'Sigma 28-105mm F3.8-5.6 UC-III Aspherical IF',
     929          '26 40 3C 80 2C 3C 1C 02' => 'Sigma 28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro',
     930          '26 40 3C 80 2B 3C 1C 02' => 'Sigma 28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro',
     931          '26 3D 3C 80 2F 3D 1C 02' => 'Sigma 28-300mm F3.8-5.6 Aspherical',
     932          '26 41 3C 8E 2C 40 1C 02' => 'Sigma 28-300mm F3.5-6.3 DG Macro',
     933          '26 40 3C 8E 2C 40 1C 02' => 'Sigma 28-300mm F3.5-6.3 Macro',
     934          '02 3B 44 61 30 3D 02 00' => 'Sigma 35-80mm F4-5.6',
     935          '02 40 44 73 2B 36 02 00' => 'Sigma 35-135mm F3.5-4.5 a',
     936          '7A 47 50 76 24 24 4B 06' => 'Sigma 50-150mm F2.8 EX APO DC HSM',
     937          'FD 47 50 76 24 24 4B 06' => 'Sigma 50-150mm F2.8 EX APO DC HSM II',
     938          '48 3C 50 A0 30 40 4B 02' => 'Sigma 50-500mm F4-6.3 EX APO RF HSM',
     939          '26 3C 54 80 30 3C 1C 06' => 'Sigma 55-200mm F4-5.6 DC',
     940          '7A 3B 53 80 30 3C 4B 06' => 'Sigma 55-200mm F4-5.6 DC HSM',
     941          '48 54 5C 80 24 24 4B 02' => 'Sigma 70-200mm F2.8 EX APO IF HSM',
     942          '7A 48 5C 80 24 24 4B 06' => 'Sigma 70-200mm F2.8 EX APO DG Macro HSM II',
     943          'EE 48 5C 80 24 24 4B 06' => 'Sigma 70-200mm F2.8 EX APO DG Macro HSM II',
     944          '02 46 5C 82 25 25 02 00' => 'Sigma 70-210mm F2.8 APO',
     945          '26 3C 5C 82 30 3C 1C 02' => 'Sigma 70-210mm F4-5.6 UC-II',
     946          '26 3C 5C 8E 30 3C 1C 02' => 'Sigma 70-300mm F4-5.6 DG Macro',
     947          '56 3C 5C 8E 30 3C 1C 02' => 'Sigma 70-300mm F4-5.6 APO Macro Super II',
     948          'E0 3C 5C 8E 30 3C 4B 06' => 'Sigma 70-300mm F4-5.6 APO DG Macro HSM',
     949          '02 37 5E 8E 35 3D 02 00' => 'Sigma 75-300mm F4.5-5.6 APO',
     950          '02 3A 5E 8E 32 3D 02 00' => 'Sigma 75-300mm F4.0-5.6',
     951          '77 44 61 98 34 3C 7B 0E' => 'Sigma 80-400mm F4.5-5.6 EX OS',
     952          '48 48 68 8E 30 30 4B 02' => 'Sigma 100-300mm F4 EX IF HSM',
     953          '48 54 6F 8E 24 24 4B 02' => 'Sigma APO 120-300mm F2.8 EX DG HSM',
     954          '7A 54 6E 8E 24 24 4B 02' => 'Sigma APO 120-300mm F2.8 EX DG HSM',
     955          'CF 38 6E 98 34 3C 4B 0E' => 'Sigma APO 120-400mm F4.5-5.6 DG OS HSM',
     956          '26 44 73 98 34 3C 1C 02' => 'Sigma 135-400mm F4.5-5.6 APO Aspherical',
     957          'CE 34 76 A0 38 40 4B 0E' => 'Sigma 150-500mm F5-6.3 DG OS APO HSM',
     958          '26 40 7B A0 34 40 1C 02' => 'Sigma APO 170-500mm F5-6.3 Aspherical RF',
     959          '48 3C 8E B0 3C 3C 4B 02' => 'Sigma APO 300-800 F5.6 EX DG HSM',
     960          'F4 54 56 56 18 18 84 06' => 'Tamron SP AF 60mm f/2.0 Di II Macro 1:1 (G005)',
     961          '1E 5D 64 64 20 20 13 00' => 'Tamron SP AF 90mm f/2.5 (52E)',
     962          '32 53 64 64 24 24 35 02' => 'Tamron SP AF 90mm f/2.8 Di Macro 1:1 (272E)',
     963          'F8 55 64 64 24 24 84 06' => 'Tamron SP AF 90mm f/2.8 Di Macro 1:1 (272NII)',
     964          '00 4C 7C 7C 2C 2C 00 02' => 'Tamron SP AF 180mm f/3.5 Di Model (B01)',
     965          'F6 3F 18 37 2C 34 84 06' => 'Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF) (B001)',
     966          '00 36 1C 2D 34 3C 00 06' => 'Tamron SP AF 11-18mm f/4.5-5.6 Di II LD Aspherical (IF) (A13)',
     967          '07 46 2B 44 24 30 03 02' => 'Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical (IF) (A05)',
     968          '00 53 2B 50 24 24 00 06' => 'Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16)',
     969          '00 54 2B 50 24 24 00 06' => 'Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16NII)',
     970          'F3 54 2B 50 24 24 84 0E' => 'Tamron SP AF 17-50mm F/2.8 XR Di II VC LD Aspherical (IF) (B005)',
     971          '00 3F 2D 80 2B 40 00 06' => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) (A14)',
     972          '00 3F 2D 80 2C 40 00 06' => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14)',
     973          '00 40 2D 80 2C 40 00 06' => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14NII)',
     974          '00 40 2D 88 2C 40 62 06' => 'Tamron AF 18-250mm f/3.5-6.3 Di II LD Aspherical (IF) Macro (A18)',
     975          '00 40 2D 88 2C 40 00 06' => 'Tamron AF 18-250mm f/3.5-6.3 Di II LD Aspherical (IF) Macro (A18NII)',
     976          'F5 40 2C 8A 2C 40 40 0E' => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical (IF) Macro (B003)',
     977          '07 40 2F 44 2C 34 03 02' => 'Tamron AF 19-35mm f/3.5-4.5 (A10)',
     978          '07 40 30 45 2D 35 03 02' => 'Tamron AF 19-35mm f/3.5-4.5 (A10)',
     979          '00 49 30 48 22 2B 00 02' => 'Tamron SP AF 20-40mm f/2.7-3.5 (166D)',
     980          '0E 4A 31 48 23 2D 0E 02' => 'Tamron SP AF 20-40mm f/2.7-3.5 (166D)',
     981          '45 41 37 72 2C 3C 48 02' => 'Tamron SP AF 24-135mm f/3.5-5.6 AD Aspherical (IF) Macro (190D)',
     982          '33 54 3C 5E 24 24 62 02' => 'Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09)',
     983          'FA 54 3C 5E 24 24 84 06' => 'Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09NII)',
     984          '10 3D 3C 60 2C 3C D2 02' => 'Tamron AF 28-80mm f/3.5-5.6 Aspherical (177D)',
     985          '45 3D 3C 60 2C 3C 48 02' => 'Tamron AF 28-80mm f/3.5-5.6 Aspherical (177D)',
     986          '00 48 3C 6A 24 24 00 02' => 'Tamron SP AF 28-105mm f/2.8 LD Aspherical IF (176D)',
     987          '0B 3E 3D 7F 2F 3D 0E 00' => 'Tamron AF 28-200mm f/3.8-5.6 (71D)',
     988          '0B 3E 3D 7F 2F 3D 0E 02' => 'Tamron AF 28-200mm f/3.8-5.6D (171D)',
     989          '12 3D 3C 80 2E 3C DF 02' => 'Tamron AF 28-200mm f/3.8-5.6 AF Aspherical LD (IF) (271D)',
     990          '4D 41 3C 8E 2B 40 62 02' => 'Tamron AF 28-300mm f/3.5-6.3 XR Di LD Aspherical (IF) (A061)',
     991          '4D 41 3C 8E 2C 40 62 02' => 'Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical (IF) (185D)',
     992          'F9 40 3C 8E 2C 40 40 0E' => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical (IF) Macro (A20)',
     993          '00 47 53 80 30 3C 00 06' => 'Tamron AF 55-200mm f/4-5.6 Di II LD (A15)',
     994          'F7 53 5C 80 24 24 84 06' => 'Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)',
     995          '69 48 5C 8E 30 3C 6F 02' => 'Tamron AF 70-300mm f/4-5.6 LD Macro 1:2 (772D)',
     996          '00 48 5C 8E 30 3C 00 06' => 'Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17)',
     997          '20 3C 80 98 3D 3D 1E 02' => 'Tamron AF 200-400mm f/5.6 LD IF (75D)',
     998          '00 3E 80 A0 38 3F 00 02' => 'Tamron SP AF 200-500mm f/5-6.3 Di LD (IF) (A08)',
     999          '00 3F 80 A0 38 3F 00 02' => 'Tamron SP AF 200-500mm f/5-6.3 Di (A08)',
     1000          '00 40 2B 2B 2C 2C 00 02' => 'Tokina AT-X 17 AF PRO (AF 17mm f/3.5)',
     1001          '00 47 44 44 24 24 00 06' => 'Tokina AT-X M35 PRO DX (AF 35mm f/2.8 Macro)',
     1002          '00 54 68 68 24 24 00 02' => 'Tokina AT-X M100 PRO D (AF 100mm f/2.8 Macro)',
     1003          '00 54 8E 8E 24 24 00 02' => 'Tokina AT-X 300 AF PRO (AF 300mm f/2.8)',
     1004          '00 40 18 2B 2C 34 00 06' => 'Tokina AT-X 107 DX Fisheye (AF 10-17mm f/3.5-4.5)',
     1005          '00 48 1C 29 24 24 00 06' => 'Tokina AT-X 116 PRO DX (AF 11-16mm f/2.8)',
     1006          '00 3C 1F 37 30 30 00 06' => 'Tokina AT-X 124 AF PRO DX (AF 12-24mm f/4)',
     1007          '7A 3C 1F 37 30 30 7E 06' => 'Tokina AT-X 124 AF PRO DX II (AF 12-24mm f/4)', //doublon ?
     1008          '00 48 29 50 24 24 00 06' => 'Tokina AT-X 165 PRO DX (AF 16-50mm f/2.8)',
     1009          '00 40 2A 72 2C 3C 00 06' => 'Tokina AT-X 16.5-135 DX (AF 16.5-135mm F3.5-5.6)',
     1010          '2F 48 30 44 24 24 29 02' => 'Tokina AT-X 235 AF PRO (AF 20-35mm f/2.8)', //doublon ?
     1011          '2F 40 30 44 2C 34 29 02' => 'Tokina AF 235 II (AF 20-35mm f/3.5-4.5)',
     1012          '25 48 3C 5C 24 24 1B 02' => 'Tokina AT-X 270 AF PRO II (AF 28-70mm f/2.6-2.8)',
     1013          '07 48 3C 5C 24 24 03 00' => 'Tokina AT-X 287 AF (AF 28-70mm f/2.8)',
     1014          '07 47 3C 5C 25 35 03 00' => 'Tokina AF 287 SD (AF 28-70mm f/2.8-4.5)',
     1015          '00 48 3C 60 24 24 00 02' => 'Tokina AT-X 280 AF PRO (AF 28-80mm f/2.8)',
     1016          '00 48 50 72 24 24 00 06' => 'Tokina AT-X 535 PRO DX (AF 50-135mm f/2.8)',
     1017          '14 54 60 80 24 24 0B 00' => 'Tokina AT-X 828 AF PRO (AF 80-200mm f/2.8)',
     1018          '24 44 60 98 34 3C 1A 02' => 'Tokina AT-X 840 AF-II (AF 80-400mm f/4.5-5.6)',
     1019          '00 44 60 98 34 3C 00 02' => 'Tokina AT-X 840 AF D (AF 80-400mm f/4.5-5.6)',
     1020          '14 48 68 8E 30 30 0B 00' => 'Tokina AT-X 340 AF (AF 100-300mm f/4)',
     1021          '06 3F 68 68 2C 2C 06 00' => 'Cosina AF 100mm F3.5 Macro',
     1022          '07 36 3D 5F 2C 3C 03 00' => 'Cosina AF Zoom 28-80mm F3.5-5.6 MC Macro',
     1023          '07 46 3D 6A 25 2F 03 00' => 'Cosina AF Zoom 28-105mm F2.8-3.8 MC',
     1024          '12 36 5C 81 35 3D 09 00' => 'Cosina AF Zoom 70-210mm F4.5-5.6 MC Macro',
     1025          '12 39 5C 8E 34 3D 08 02' => 'Cosina AF Zoom 70-300mm F4.5-5.6 MC Macro',
     1026          '12 3B 68 8D 3D 43 09 02' => 'Cosina AF Zoom 100-300mm F5.6-6.7 MC Macro',
     1027          '00 40 31 31 2C 2C 00 00' => 'Voigtlander Color Skopar 20mm F3.5 SLII Aspherical',
     1028          '00 54 48 48 18 18 00 00' => 'Voigtlander Ultron 40mm F2 SLII Aspherical',
     1029          '00 54 55 55 0C 0C 00 00' => 'Voigtlander Nokton 58mm F1.4 SLII',
     1030          '00 54 56 56 30 30 00 00' => 'Coastal Optical Systems 60mm 1:4 UV-VIS-IR Macro Apo',
     1031          '02 40 44 5C 2C 34 02 00' => 'Exakta AF 35-70mm 1:3.5-4.5 MC',
     1032          '07 3E 30 43 2D 35 03 00' => 'Soligor AF Zoom 19-35mm 1:3.5-4.5 MC',
     1033          '03 43 5C 81 35 35 02 00' => 'Soligor AF C/D Zoom UMCS 70-210mm 1:4.5',
     1034          '12 4A 5C 81 31 3D 09 00' => 'Soligor AF C/D Auto Zoom+Macro 70-210mm 1:4-5.6 UMCS',
     1035          '00 00 00 00 00 00 00 01' => 'Manual Lens No CPU',
     1036          '00 47 10 10 24 24 00 00' => 'Fisheye Nikkor 8mm f/2.8 AiS',
     1037          '00 54 44 44 0C 0C 00 00' => 'Nikkor 35mm f/1.4 AiS',
     1038          '00 48 50 50 18 18 00 00' => 'Nikkor H 50mm f/2',
     1039          '00 48 68 68 24 24 00 00' => 'Series E 100mm f/2.8',
     1040          '00 4C 6A 6A 20 20 00 00' => 'Nikkor 105mm f/2.5 AiS',
     1041          '00 48 80 80 30 30 00 00' => 'Nikkor 200mm f/4 AiS',
     1042        )
     1043      ), // < LensData
     1044
     1045      // RawImageCenter, tag 0x0099
     1046      0x0099 => Array(
     1047        'tagName'     => "RawImageCenter",
     1048        'schema'      => "Nikon",
     1049        'translatable'=> false,
     1050        'combiTag'    => 0,
     1051        'implemented' => true,
     1052      ), // < RawImageCenter
     1053
     1054      // SensorPixelSize, tag 0x009a
     1055      0x009a => Array(
     1056        'tagName'     => "SensorPixelSize",
     1057        'schema'      => "Nikon",
     1058        'translatable'=> false,
     1059        'combiTag'    => 0,
     1060        'implemented' => true,
     1061      ), // < SensorPixelSize
     1062
     1063      // SceneAssist, tag 0x009c
     1064      0x009c => Array(
     1065        'tagName'     => "SceneAssist",
     1066        'schema'      => "Nikon",
     1067        'translatable'=> false,
     1068        'combiTag'    => 0,
     1069        'implemented' => true,
     1070      ), // < SceneAssist
     1071
     1072      // RetouchHistory, tag 0x009e
     1073      0x009e => Array(
     1074        'tagName'     => "RetouchHistory",
     1075        'schema'      => "Nikon",
     1076        'translatable'=> false,
     1077        'combiTag'    => 0,
     1078        'implemented' => false,
     1079      ), // < RetouchHistory
     1080
     1081      // SerialNumber, tag 0x00a0
     1082      0x00a0 => Array(
     1083        'tagName'     => "SerialNumber",
     1084        'schema'      => "Nikon",
     1085        'translatable'=> false,
     1086        'combiTag'    => 0,
     1087        'implemented' => true,
     1088      ), // < SerialNumber
     1089
     1090      // ImageDataSize, tag 0x00a2
     1091      0x00a2 => Array(
     1092        'tagName'     => "ImageDataSize",
     1093        'schema'      => "Nikon",
     1094        'translatable'=> false,
     1095        'combiTag'    => 0,
     1096        'implemented' => true,
     1097      ), // <
     1098
     1099      // ImageCount, tag 0x00a5
     1100      0x00a5 => Array(
     1101        'tagName'     => "ImageCount",
     1102        'schema'      => "Nikon",
     1103        'translatable'=> false,
     1104        'combiTag'    => 0,
     1105        'implemented' => false,
     1106      ), // < ImageCount
     1107
     1108      // DeletedImageCount, tag 0x00a6
     1109      0x00a6 => Array(
     1110        'tagName'     => "DeletedImageCount",
     1111        'schema'      => "Nikon",
     1112        'translatable'=> false,
     1113        'combiTag'    => 0,
     1114        'implemented' => false,
     1115      ), // < DeletedImageCount
     1116
     1117      // ShutterCount, tag 0x00a7
     1118      0x00a7 => Array(
     1119        'tagName'     => "ShutterCount",
     1120        'schema'      => "Nikon",
     1121        'translatable'=> false,
     1122        'combiTag'    => 0,
     1123        'implemented' => true,
     1124      ), // < ShutterCount
     1125
     1126      // FlashInfo, tag 0x00a8
     1127      0x00a8 => Array(
     1128        'tagName'     => "FlashInfo",
     1129        'schema'      => "Nikon",
     1130        'translatable'=> false,
     1131        'combiTag'    => 0,
     1132        'implemented' => false,
     1133      ), // < FlashInfo
     1134
     1135      // ImageOptimization, tag 0x00a9
     1136      0x00a9 => Array(
     1137        'tagName'     => "ImageOptimization",
     1138        'schema'      => "Nikon",
     1139        'translatable'=> false,
     1140        'combiTag'    => 0,
     1141        'implemented' => true,
     1142      ), // < ImageOptimization
     1143
     1144      // Saturation, tag 0x00aa
     1145      0x00aa => Array(
     1146        'tagName'     => "Saturation",
     1147        'schema'      => "Nikon",
     1148        'translatable'=> false,
     1149        'combiTag'    => 0,
     1150        'implemented' => true,
     1151      ), // < Saturation
     1152
     1153      // VariProgram, tag 0x00ab
     1154      0x00ab => Array(
     1155        'tagName'     => "VariProgram",
     1156        'schema'      => "Nikon",
     1157        'translatable'=> false,
     1158        'combiTag'    => 0,
     1159        'implemented' => true,
     1160      ), // < VariProgram
     1161
     1162      // ImageStabilization, tag 0x00ac
     1163      0x00ac => Array(
     1164        'tagName'     => "ImageStabilization",
     1165        'schema'      => "Nikon",
     1166        'translatable'=> false,
     1167        'combiTag'    => 0,
     1168        'implemented' => false,
     1169      ), // < ImageStabilization
     1170
     1171      // AFResponse, tag 0x00ad
     1172      0x00ad => Array(
     1173        'tagName'     => "AFResponse",
     1174        'schema'      => "Nikon",
     1175        'translatable'=> false,
     1176        'combiTag'    => 0,
     1177        'implemented' => false,
     1178      ), // < AFResponse
     1179
     1180      // MultiExposure, tag 0x00b0
     1181      0x00b0 => Array(
     1182        'tagName'     => "MultiExposure",
     1183        'schema'      => "Nikon",
     1184        'translatable'=> false,
     1185        'combiTag'    => 0,
     1186        'implemented' => false,
     1187      ), // < MultiExposure
     1188
     1189      // HighISONoiseReduction, tag 0x00b1
     1190      0x00b1 => Array(
     1191        'tagName'     => "HighISONoiseReduction",
     1192        'schema'      => "Nikon",
     1193        'translatable'=> true,
     1194        'combiTag'    => 0,
     1195        'implemented' => true,
     1196        'tagValues'   => Array(
     1197          0 => "Off",
     1198          1 => "Minimal",
     1199          2 => "Low",
     1200          4 => "Normal",
     1201          6 => "High",
     1202        )
     1203      ), // < HighISONoiseReduction
     1204
     1205      // ToningEffect, tag 0x00b3
     1206      0x00b3 => Array(
     1207        'tagName'     => "ToningEffect",
     1208        'schema'      => "Nikon",
     1209        'translatable'=> false,
     1210        'combiTag'    => 0,
     1211        'implemented' => false,
     1212      ), // < ToningEffect
     1213
     1214      // PowerUpTime, tag 0x00b6
     1215      0x00b6 => Array(
     1216        'tagName'     => "PowerUpTime",
     1217        'schema'      => "Nikon",
     1218        'translatable'=> false,
     1219        'combiTag'    => 0,
     1220        'implemented' => false,
     1221      ), // < PowerUpTime
     1222
     1223      // AFInfo2, tag 0x00b7
     1224      0x00b70 => Array(
     1225        'tagName'     => "AFInfo2",
     1226        'schema'      => "Nikon",
     1227        'translatable'=> false,
     1228        'combiTag'    => 0,
     1229        'implemented' => false,
     1230      ), // < AFInfo2
     1231
     1232      // FileInfo, tag 0x00b8
     1233      0x00b8 => Array(
     1234        'tagName'     => "FileInfo",
     1235        'schema'      => "Nikon",
     1236        'translatable'=> false,
     1237        'combiTag'    => 0,
     1238        'implemented' => false,
     1239      ), // < FileInfo
     1240
     1241      // AFTune, tag 0x00b9
     1242      0x00b9 => Array(
     1243        'tagName'     => "AFTune",
     1244        'schema'      => "Nikon",
     1245        'translatable'=> false,
     1246        'combiTag'    => 0,
     1247        'implemented' => false,
     1248      ), // < AFTune
     1249
     1250      // PictureControl, tag 0x00bd
     1251      0x00bd => Array(
     1252        'tagName'     => "PictureControl",
     1253        'schema'      => "Nikon",
     1254        'translatable'=> false,
     1255        'combiTag'    => 0,
     1256        'implemented' => false,
     1257      ), // < PictureControl
     1258
     1259      // PrintIM, tag 0x0e00
     1260      0x0e00 => Array(
     1261        'tagName'     => "PrintIM",
     1262        'schema'      => "Nikon",
     1263        'translatable'=> false,
     1264        'combiTag'    => 0,
     1265        'implemented' => false,
     1266      ), // <
     1267
     1268      // NikonCaptureData, tag 0x0e01
     1269      0x0e01 => Array(
     1270        'tagName'     => "NikonCaptureData",
     1271        'schema'      => "Nikon",
     1272        'translatable'=> false,
     1273        'combiTag'    => 0,
     1274        'implemented' => false,
     1275      ), // < NikonCaptureData
     1276
     1277      // NikonCaptureVersion, tag 0x0e09
     1278      0x0e09 => Array(
     1279        'tagName'     => "NikonCaptureVersion",
     1280        'schema'      => "Nikon",
     1281        'translatable'=> false,
     1282        'combiTag'    => 0,
     1283        'implemented' => true,
     1284      ), // < NikonCaptureVersion
     1285
     1286      // NikonCaptureOffsets, tag 0x0e0e
     1287      0x0e0e => Array(
     1288        'tagName'     => "NikonCaptureOffsets",
     1289        'schema'      => "Nikon",
     1290        'translatable'=> false,
     1291        'combiTag'    => 0,
     1292        'implemented' => false,
     1293      ), // < NikonCaptureOffsets
     1294
     1295      // NikonScanIFD, tag 0x0e10
     1296      0x0e10 => Array(
     1297        'tagName'     => "NikonScanIFD",
     1298        'schema'      => "Nikon",
     1299        'translatable'=> false,
     1300        'combiTag'    => 0,
     1301        'implemented' => false,
     1302      ), // < NikonScanIFD
     1303
     1304      // NikonICCProfile, tag 0x0e1d
     1305      0x0e1d => Array(
     1306        'tagName'     => "NikonICCProfile",
     1307        'schema'      => "Nikon",
     1308        'translatable'=> false,
     1309        'combiTag'    => 0,
     1310        'implemented' => false,
     1311      ), // < NikonICCProfile
     1312
     1313      // NikonCaptureOutput, tag 0x0e1e
     1314      0x0e1e => Array(
     1315        'tagName'     => "NikonCaptureOutput",
     1316        'schema'      => "Nikon",
     1317        'translatable'=> false,
     1318        'combiTag'    => 0,
     1319        'implemented' => false,
     1320      ), // < NikonCaptureOutput
     1321
     1322      // NEFBitDepth, tag 0x0e22
     1323      0x0e22 => Array(
     1324        'tagName'     => "NEFBitDepth",
     1325        'schema'      => "Nikon",
     1326        'translatable'=> false,
     1327        'combiTag'    => 0,
     1328        'implemented' => false,
     1329      ), // < NEFBitDepth
     1330
    621331    );
    631332
  • extensions/AMetaData/JpegMetaData/TagDefinitions/PentaxTags.class.php

    r4904 r4931  
    14691469      ),
    14701470
    1471       // FlashInfo, tag 0x0209, "AEMeteringSegments"
     1471      // AEMeteringSegments, tag 0x0209, "AEMeteringSegments"
    14721472      0x0209 => Array(
    14731473        'tagName'     => "AEMeteringSegments",
  • extensions/AMetaData/JpegMetaData/TagDefinitions/XmpTags.class.php

    r4904 r4931  
    190190      ),
    191191
     192      // not present in specification, but found in some files
     193      'dc:CreatorTool' => Array(
     194        'implemented'  => true,
     195        'translatable' => false,
     196        'type'         => self::TYPE_SIMPLE,
     197        'schema'       => "dc",
     198      ),
     199
     200
     201
    192202      /*
    193203       * XMP Basic schema
     
    614624        ),
    615625      ),
     626      // not present in specification but found in some files
     627      'photoshop:ICCProfile' => Array(
     628        'implemented'  => true,
     629        'translatable' => false,
     630        'type'         => self::TYPE_SIMPLE,
     631        'schema'       => "photoshop",
     632      ),
     633      'photoshop:ColorMode' => Array(
     634        'implemented'  => false,
     635        'translatable' => false,
     636        'type'         => self::TYPE_SIMPLE,
     637        'schema'       => "photoshop",
     638      ),
    616639
    617640
     
    892915        ),
    893916      ),
     917      // not present in specifications, but found in some files
     918      'crs:WhiteBalance' => Array(
     919        'implemented'  => true,
     920        'translatable' => true,
     921        'type'         => self::TYPE_SIMPLE,
     922        'schema'       => "crs",
     923        'tagValues'    => Array(
     924           'As Shot'     => "As Shot",
     925           'Auto'        => "Auto",
     926           'Daylight'    => "Daylight",
     927           'Cloudy'      => "Cloudy",
     928           'Shade'       => "Shade",
     929           'Tungsten'    => "Tungsten",
     930           'Fluorescent' => "Fluorescent",
     931           'Flash'       => "Flash",
     932           'Custom'      => "Custom",
     933        ),
     934      ),
    894935
    895936
     
    13861427      ),
    13871428      'exif:Balance' => Array(
     1429        'exifTag'      => 0xA403,
     1430        'implemented'  => true,
     1431        'translatable' => false,
     1432        'type'         => self::TYPE_SIMPLE,
     1433        'schema'       => "exif",
     1434      ),
     1435      'exif:WhiteBalance' => Array(
    13881436        'exifTag'      => 0xA403,
    13891437        'implemented'  => true,
     
    18411889              $tmpTag=$tags->getTagById($val[$schema]);
    18421890            }
    1843             elseif($val[$schema]!=0xFFFF and $tags->tagIdExists($val[$schema]))
    1844             {
    1845               $tmpTag=$tags->getTagById($val[$schema]);
    1846             }
    18471891            else
    18481892            {
  • extensions/AMetaData/amd_aip.class.inc.php

    r4917 r4931  
    896896  private function ajax_amd_makeStatsConsolidation()
    897897  {
    898 
    899898    $sql="UPDATE ".$this->tables['used_tags']." ut,
    900899            (SELECT COUNT(imageId) AS nb, numId
     
    904903          WHERE ut.numId = nb.numId;";
    905904    pwg_query($sql);
    906 
    907     return($returned);
    908905  }
    909906
  • extensions/AMetaData/amd_install.class.inc.php

    r4915 r4931  
    8383      $result=$this->tablef->create_tables($tables_def);
    8484
    85       /*
    86        * fill the 'used_tags' table with default values
    87        */
    88       foreach(JpegMetaData::getTagList(Array('filter' => JpegMetaData::TAGFILTER_IMPLEMENTED, 'xmp' => true, 'maker' => true, 'iptc' => true)) as $key => $val)
    89       {
    90         $sql="INSERT INTO ".$this->tables['used_tags']." VALUES('', '".$key."', '".(($val['translatable'])?'y':'n')."', '".$val['name']."', 0);";
    91         pwg_query($sql);
    92       }
    93 
    9485      return($result);
    9586    }
     
    109100      global $template;
    110101
     102
     103      pwg_query("DELETE FROM ".$this->tables['used_tags']);
     104      pwg_query("DELETE FROM ".$this->tables['images_tags']);
     105      pwg_query("UPDATE ".$this->tables['images']." SET analyzed='n', nbTags=0;");
     106      /*
     107       * fill the 'used_tags' table with default values
     108       */
     109      foreach(JpegMetaData::getTagList(Array('filter' => JpegMetaData::TAGFILTER_IMPLEMENTED, 'xmp' => true, 'maker' => true, 'iptc' => true)) as $key => $val)
     110      {
     111        $sql="INSERT INTO ".$this->tables['used_tags']." VALUES('', '".$key."', '".(($val['translatable'])?'y':'n')."', '".$val['name']."', 0);";
     112        pwg_query($sql);
     113      }
     114
    111115      $this->init_config();
    112116      $this->load_config();
  • extensions/AMetaData/language/fr_FR/plugin.lang.php

    r4905 r4931  
    1515
    1616$lang['g003_performances'] = "Performances";
    17 $lang['g003_setting_nb_items_per_request'] = "Nombre d'éléments traités par requêtes";
     17$lang['g003_setting_nb_items_per_request'] = "Nombre d'images analysées par requêtes";
    1818$lang['g003_apply'] = "Appliquer";
    1919
     
    3030$lang['g003_loading'] = "Chargement...";
    3131$lang['g003_numberOfPicturesWithoutTags'] = "%d images ne disposent pas de métadonnées";
    32 $lang['g003_no_items_selected'] = "Aucun tag n'est sélectionné";
    33 $lang['g003_selected_tag_isnot_linked_with_any_picture'] = "Le tag sélectionné n'est rattaché à aucune image";
    34 $lang['g003_TagId'] = "Tag";
     32$lang['g003_no_items_selected'] = "Aucune métadonnée n'est sélectionnée";
     33$lang['g003_selected_tag_isnot_linked_with_any_picture'] = "La métadonnée sélectionnée n'est rattachée à aucune image";
     34$lang['g003_TagId'] = "Métadonnée";
    3535$lang['g003_TagLabel'] = "Nom";
    3636$lang['g003_NumOfImage'] = "Images";
     
    4040$lang['g003_order'] = "Trier par";
    4141$lang['g003_filter'] = "Filtrer";
    42 $lang['g003_tagOrder'] = "Tag";
     42$lang['g003_tagOrder'] = "Métadonnée";
    4343$lang['g003_numOrder'] = "Nombre d'images";
    4444$lang['g003_valueOrder'] = "Valeur";
    4545$lang['g003_no_filter'] = "Aucun filtre";
    46 $lang['g003_exclude_unused_tags'] = "Exclure les tags inutilisés";
     46$lang['g003_exclude_unused_tags'] = "Exclure les métadonnées inutilisées";
    4747$lang['g003_Value'] = "Valeur";
    48 $lang['g003_selected_tags_only'] = "Ne restituer que les tags sélectionnés";
     48$lang['g003_selected_tags_only'] = "Ne restituer que les métadonnées sélectionnées";
    4949
    5050$lang['g003_select_metadata'] = "Sélection des métadonnées";
    5151$lang['g003_display_management'] = "Gestion de l'affichage des métadonnées";
    5252
    53 $lang['g003_click_to_edit_group'] = "Cliquer pour éditer les propriétés du groupe";
    54 $lang['g003_click_to_delete_group'] = "Cliquer pour supprimer le groupe";
    55 $lang['g003_click_to_manage_group'] = "Cliquer pour gérer les éléments du groupe";
    56 $lang['g003_click_to_manage_list'] = "Cliquer pour ajouter/supprimer des tags";
    57 $lang['g003_add_a_group'] = "Ajouter un groupe";
    58 $lang['g003_adding_a_group'] = "Ajout d'un groupe";
    59 $lang['g003_editing_a_group'] = "Edition d'un groupe";
    60 $lang['g003_deleting_a_group'] = "Suppression d'un groupe";
    61 $lang['g003_new_group'] = "Nouveau groupe";
     53$lang['g003_click_to_edit_group'] = "Cliquer pour éditer les propriétés du groupe de métadonnées";
     54$lang['g003_click_to_delete_group'] = "Cliquer pour supprimer le groupe de métadonnées";
     55$lang['g003_click_to_manage_group'] = "Cliquer pour gérer les éléments du groupe de métadonnées";
     56$lang['g003_click_to_manage_list'] = "Cliquer pour ajouter/supprimer des métadonnées";
     57$lang['g003_add_a_group'] = "Ajouter un groupe de métadonnées";
     58$lang['g003_adding_a_group'] = "Ajout d'un groupe de métadonnées";
     59$lang['g003_editing_a_group'] = "Edition d'un groupe de métadonnées";
     60$lang['g003_deleting_a_group'] = "Suppression d'un groupe de métadonnées";
     61$lang['g003_new_group'] = "Nouveau groupe de métadonnées";
    6262$lang['g003_name'] = "Nom";
    63 $lang['g003_add_delete_tags'] = "Ajouter/Supprimer des tags";
    64 $lang['g003_confirm_group_delete'] = "Etes-vous sur de vouloir supprimer le groupe %s ?";
     63$lang['g003_add_delete_tags'] = "Ajouter/Supprimer des métadonnées";
     64$lang['g003_confirm_group_delete'] = "Etes-vous sur de vouloir supprimer le groupe de métadonnées %s ?";
    6565
    6666$lang['g003_ok'] = "Ok";
     
    7070
    7171
    72 $lang['g003_invalid_group_id'] = "Identifiant de groupe invalide";
    73 $lang['g003_no_tag_can_be_selected'] = "Aucun tag n'est disponible";
     72$lang['g003_invalid_group_id'] = "Identifiant de groupe de métadonnées invalide";
     73$lang['g003_no_tag_can_be_selected'] = "Aucune métadonnée n'est disponible";
    7474
    7575$lang['g003_warning_on_analyze_0'] = "Attention !";
Note: See TracChangeset for help on using the changeset viewer.