Changeset 5237


Ignore:
Timestamp:
03/21/10 23:58:42 (10 years ago)
Author:
grum
Message:

fix GPS managment with XMP metadata ; and fix some minor bugs

Location:
extensions/AMetaData
Files:
4 edited

Legend:

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

    r5231 r5237  
    131131           * can't use the timestamp function because not compatible with php < 5.3 
    132132           */ 
    133           if($this->entries[$tagD]->getLabel() instanceof DateTime) 
     133          if($this->entries[$tagD]->getLabel() instanceof DateTime and 
     134             $this->entries[$tagT]->getLabel() instanceof DateTime) 
    134135          { 
    135136            $this->entries[$tagD]->getLabel()->setTime( 
  • extensions/AMetaData/JpegMetaData/Readers/XmpReader.class.php

    r5222 r5237  
    451451          $returned=explode(":", $value); 
    452452          break; 
     453        case "exif:GPSLatitude": 
     454        case "exif:GPSLongitude": 
     455        case "exif:GPSDestLatitude": 
     456        case "exif:GPSDestLongitude": 
     457          $returned=Array('coord' => "", 'card'=>""); 
     458          preg_match_all('/(\d{1,3}),(\d{1,2})(?:\.(\d*)){0,1}(N|S|E|W)/', $value, $result); 
     459          $returned['coord']=$result[1][0]."° ".$result[2][0]."' "; 
     460          if(trim($result[3][0])!="") 
     461          { 
     462            $returned['coord'].= round(("0.".$result[3][0])*60,2)."\""; 
     463          } 
     464          switch($result[4][0]) 
     465          { 
     466            case "N": 
     467              $returned['card']="North"; 
     468              break; 
     469            case "S": 
     470              $returned['card']="South"; 
     471              break; 
     472            case "E": 
     473              $returned['card']="East"; 
     474              break; 
     475            case "W": 
     476              $returned['card']="West"; 
     477              break; 
     478          } 
     479          $type=ByteType::UNDEFINED; 
     480          break; 
    453481        case "xmp:CreateDate": 
    454482        case "xmp:ModifyDate": 
     
    604632        case "exif:CFAPattern": 
    605633        case "exif:DeviceSettingDescription": 
    606         case "exif:GPSLatitude": 
    607         case "exif:GPSLongitude": 
    608         case "exif:GPSDestLatitude": 
    609         case "exif:GPSDestLongitude": 
    610634          $returned=$xmpValue; 
    611635          $type=ByteType::UNDEFINED; 
  • extensions/AMetaData/JpegMetaData/TagDefinitions/XmpTags.class.php

    r5222 r5237  
    16361636        'gpsTag'       => 0xFFFF, // combination of tags 0x02 & 0x01 
    16371637        'implemented'  => true, 
    1638         'translatable' => false, 
     1638        'translatable' => true, 
    16391639        'type'         => self::TYPE_SIMPLE, 
    16401640        'schema'       => "exif", 
     
    16431643        'gpsTag'       => 0xFFFF, // combination of tags 0x04 & 0x03 
    16441644        'implemented'  => true, 
    1645         'translatable' => false, 
     1645        'translatable' => true, 
    16461646        'type'         => self::TYPE_SIMPLE, 
    16471647        'schema'       => "exif", 
     
    17481748        'gpsTag'       => 0xFFFF,  // combination of tags 0x14 & 0x13 
    17491749        'implemented'  => true, 
    1750         'translatable' => false, 
     1750        'translatable' => true, 
    17511751        'type'         => self::TYPE_SIMPLE, 
    17521752        'schema'       => "exif", 
     
    17551755        'gpsTag'       => 0xFFFF,  // combination of tags 0x16 & 0x15 
    17561756        'implemented'  => true, 
    1757         'translatable' => false, 
     1757        'translatable' => true, 
    17581758        'type'         => self::TYPE_SIMPLE, 
    17591759        'schema'       => "exif", 
  • extensions/AMetaData/amd_root.class.inc.php

    r5226 r5237  
    398398      return(implode($separator, $tmp)); 
    399399    } 
     400    elseif(preg_match('/\d{1,3}°\s\d{1,2}\'\s(\d{1,2}\.{0,1}\d{0,2}){0,1}.,\s(north|south|east|west)$/i', $value)) 
     401    { 
     402      /* \d{1,3}°\s\d{1,2}\'\s(\d{1,2}\.{0,1}\d{0,2}){0,1}. 
     403       * 
     404       * keys 'coord' and 'card' are present 
     405       * 
     406       * assume this is a GPS coordinate 
     407       */ 
     408        return(preg_replace( 
     409          Array('/, north$/i', '/, south$/i', '/, east$/i', '/, west$/i'), 
     410          Array(" ".L10n::get("North"), " ".L10n::get("South"), " ".L10n::get("East"), " ".L10n::get("West")), 
     411          $value) 
     412        ); 
     413    } 
    400414    else 
    401415    { 
Note: See TracChangeset for help on using the changeset viewer.