Changeset 4931


Ignore:
Timestamp:
02/21/10 20:41:06 (10 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.