Changeset 30803 in osm for applications


Ignore:
Timestamp:
2014-11-16T00:01:37+01:00 (10 years ago)
Author:
bastik
Message:

fixed #josm10745 - add "GPSVersionID=2.3.0.0" tag for Mapillary.com

also: update sanselan library from version 904291 to version 1633840.
Bugs from previous version seem to be fixed.

Location:
applications/editors/josm/plugins/photo_geotagging/src/org
Files:
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/photo_geotagging/src/org/apache

    • Property svn:externals deleted
  • applications/editors/josm/plugins/photo_geotagging/src/org/apache/commons

    • Property svn:externals set to
  • applications/editors/josm/plugins/photo_geotagging/src/org/openstreetmap/josm/plugins/photo_geotagging/ExifGPSTagger.java

    r30738 r30803  
    1313import java.util.TimeZone;
    1414
    15 import org.apache.sanselan.ImageReadException;
    16 import org.apache.sanselan.ImageWriteException;
    17 import org.apache.sanselan.Sanselan;
    18 import org.apache.sanselan.common.IImageMetadata;
    19 import org.apache.sanselan.formats.jpeg.JpegImageMetadata;
    20 import org.apache.sanselan.formats.jpeg.exifRewrite.ExifRewriter;
    21 import org.apache.sanselan.formats.tiff.TiffImageMetadata;
    22 import org.apache.sanselan.formats.tiff.constants.GPSTagConstants;
    23 import org.apache.sanselan.formats.tiff.fieldtypes.FieldType;
    24 import org.apache.sanselan.formats.tiff.write.TiffOutputDirectory;
    25 import org.apache.sanselan.formats.tiff.write.TiffOutputField;
    26 import org.apache.sanselan.formats.tiff.write.TiffOutputSet;
     15import org.apache.commons.imaging.ImageReadException;
     16import org.apache.commons.imaging.ImageWriteException;
     17import org.apache.commons.imaging.Imaging;
     18import org.apache.commons.imaging.common.IImageMetadata;
     19import org.apache.commons.imaging.common.RationalNumber;
     20import org.apache.commons.imaging.formats.jpeg.JpegImageMetadata;
     21import org.apache.commons.imaging.formats.jpeg.exif.ExifRewriter;
     22import org.apache.commons.imaging.formats.tiff.TiffImageMetadata;
     23import org.apache.commons.imaging.formats.tiff.constants.GpsTagConstants;
     24import org.apache.commons.imaging.formats.tiff.write.TiffOutputDirectory;
     25import org.apache.commons.imaging.formats.tiff.write.TiffOutputSet;
    2726
    2827public class ExifGPSTagger {
     
    5251        TiffOutputSet outputSet = null;
    5352
    54         IImageMetadata metadata = Sanselan.getMetadata(jpegImageFile);
     53        IImageMetadata metadata = Imaging.getMetadata(jpegImageFile);
    5554        JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata;
    5655        if (null != jpegMetadata) {
     
    6665        }
    6766
     67        TiffOutputDirectory gpsDirectory = outputSet.getOrCreateGPSDirectory();
     68        gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_VERSION_ID);
     69        gpsDirectory.add(GpsTagConstants.GPS_TAG_GPS_VERSION_ID, (byte)2, (byte)3, (byte)0, (byte)0);
     70
    6871        Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
    69 
    7072        calendar.setTimeInMillis(gpsTime);
    7173
     
    8789        //System.err.println("date: "+dateStamp+"  h/m/s: "+hour+"/"+minute+"/"+second);
    8890
    89         Double[] timeStamp = {new Double(hour), new Double(minute), new Double(second)};
    90         TiffOutputField gpsTimeStamp = TiffOutputField.create(
    91                 GPSTagConstants.GPS_TAG_GPS_TIME_STAMP,
    92                 outputSet.byteOrder, timeStamp);
    93         TiffOutputDirectory exifDirectory = outputSet.getOrCreateGPSDirectory();
    9491        // make sure to remove old value if present (this method will
    9592        // not fail if the tag does not exist).
    96         exifDirectory.removeField(GPSTagConstants.GPS_TAG_GPS_TIME_STAMP);
    97         exifDirectory.add(gpsTimeStamp);
     93        gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_TIME_STAMP);
     94        gpsDirectory.add(GpsTagConstants.GPS_TAG_GPS_TIME_STAMP,
     95                RationalNumber.valueOf(hour),
     96                RationalNumber.valueOf(minute),
     97                RationalNumber.valueOf(second));
    9898
    99         TiffOutputField gpsDateStamp = SanselanFixes.create(
    100                 GPSTagConstants.GPS_TAG_GPS_DATE_STAMP,
    101                 outputSet.byteOrder, dateStamp);
    10299        // make sure to remove old value if present (this method will
    103100        // not fail if the tag does not exist).
    104         exifDirectory.removeField(GPSTagConstants.GPS_TAG_GPS_DATE_STAMP);
    105         exifDirectory.add(gpsDateStamp);
     101        gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_DATE_STAMP);
     102        gpsDirectory.add(GpsTagConstants.GPS_TAG_GPS_DATE_STAMP, dateStamp);
    106103
    107         SanselanFixes.setGPSInDegrees(outputSet, lon, lat);
     104        outputSet.setGPSInDegrees(lon, lat);
    108105
    109106        if (ele != null) {
    110107            byte eleRef =  ele >= 0 ? (byte) 0 : (byte) 1;
    111             TiffOutputField gpsAltitudeRef = new TiffOutputField(
    112                     GPSTagConstants.GPS_TAG_GPS_ALTITUDE_REF,
    113                     FieldType.FIELD_TYPE_BYTE, 1, new byte[] { eleRef });
    114             exifDirectory.removeField(GPSTagConstants.GPS_TAG_GPS_ALTITUDE_REF);
    115             exifDirectory.add(gpsAltitudeRef);
     108            gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_ALTITUDE_REF);
     109            gpsDirectory.add(GpsTagConstants.GPS_TAG_GPS_ALTITUDE_REF, eleRef);
    116110
    117             Number[] val = new Number[] { Math.abs(ele) };
    118             byte[] bytes = FieldType.FIELD_TYPE_RATIONAL.writeData(val, outputSet.byteOrder);
    119             TiffOutputField gpsAltitude = new TiffOutputField(
    120                     GPSTagConstants.GPS_TAG_GPS_ALTITUDE,
    121                     FieldType.FIELD_TYPE_RATIONAL, 1, bytes);
    122             exifDirectory.removeField(GPSTagConstants.GPS_TAG_GPS_ALTITUDE);
    123             exifDirectory.add(gpsAltitude);
     111            gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_ALTITUDE);
     112            gpsDirectory.add(GpsTagConstants.GPS_TAG_GPS_ALTITUDE, RationalNumber.valueOf(Math.abs(ele)));
    124113        }
    125114        try (BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(dst))) {
Note: See TracChangeset for help on using the changeset viewer.