Changeset 5237


Ignore:
Timestamp:
Mar 21, 2010, 11:58:42 PM (14 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.