Changeset 31168 in osm for applications/editors


Ignore:
Timestamp:
2015-06-01T11:27:52+02:00 (10 years ago)
Author:
nokutu
Message:

Improved export dialog behaviour, now it sets EXIF tags, last one was wrong

Location:
applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryExportAction.java

    r31163 r31168  
    3939
    4040                if (pane.getValue() != null
    41                                 && (int) pane.getValue() == JOptionPane.OK_OPTION) {
     41                                && (int) pane.getValue() == JOptionPane.OK_OPTION
     42                                && dialog.chooser != null) {
    4243                        if (dialog.group.isSelected(dialog.all.getModel())) {
    4344                                export(MapillaryData.getInstance().getImages());
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportWriterThread.java

    r31166 r31168  
    22
    33import java.awt.image.BufferedImage;
     4import java.io.BufferedOutputStream;
    45import java.io.File;
     6import java.io.FileOutputStream;
    57import java.io.IOException;
     8import java.io.OutputStream;
    69import java.util.concurrent.ArrayBlockingQueue;
    710
    811import javax.imageio.ImageIO;
    912
     13import org.apache.sanselan.ImageReadException;
     14import org.apache.sanselan.ImageWriteException;
     15import org.apache.sanselan.formats.jpeg.exifRewrite.ExifRewriter;
     16import org.apache.sanselan.formats.tiff.constants.GPSTagConstants;
     17import org.apache.sanselan.formats.tiff.constants.TagInfo;
     18import org.apache.sanselan.formats.tiff.constants.TiffDirectoryConstants;
     19import org.apache.sanselan.formats.tiff.constants.TiffFieldTypeConstants;
     20import org.apache.sanselan.formats.tiff.fieldtypes.FieldType;
     21import org.apache.sanselan.formats.tiff.write.TiffOutputDirectory;
     22import org.apache.sanselan.formats.tiff.write.TiffOutputField;
     23import org.apache.sanselan.formats.tiff.write.TiffOutputSet;
    1024import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
    1125import org.openstreetmap.josm.gui.progress.ProgressMonitor;
     
    4054        public void run() {
    4155                monitor.setCustomText("Downloaded 0/" + amount);
    42                 File outputfile = null;
     56                File tempFile = null;
    4357                BufferedImage img;
    4458                MapillaryImage mimg = null;
     
    4862                                img = queue.take();
    4963                                mimg = queueImages.take();
    50                                 finalPath = path + "/" + mimg.getKey() + ".jpeg";
    51                                 outputfile = new File(finalPath);
    52                                 ImageIO.write(img, "jpeg", outputfile);
     64                                finalPath = path + "/" + mimg.getKey();
     65                                tempFile = new File(finalPath + ".tmp");
     66
     67                                ImageIO.write(img, "jpg", tempFile);
     68
     69                                // Write EXIF tags
     70                                TiffOutputSet outputSet = new TiffOutputSet();
     71                                TiffOutputDirectory exifDirectory = outputSet
     72                                                .getOrCreateGPSDirectory();
     73                                FieldType fieldType = TiffFieldTypeConstants.FIELD_TYPE_RATIONAL;
     74                                TiffOutputField directionref = TiffOutputField.create(GPSTagConstants.GPS_TAG_GPS_IMG_DIRECTION_REF, outputSet.byteOrder, "T");
     75                                exifDirectory.add(directionref);
     76                                TiffOutputField direction = TiffOutputField.create(
     77                                                new TagInfo("GPS Img Direction", 17, fieldType , 1, TiffDirectoryConstants.EXIF_DIRECTORY_GPS), outputSet.byteOrder, mimg.getCa());
     78                                exifDirectory.add(direction);
     79                                try {
     80                                        outputSet.setGPSInDegrees(mimg.getLatLon().lon(), mimg
     81                                                        .getLatLon().lat());
     82                                } catch (ImageWriteException e) {
     83                                        // TODO Auto-generated catch block
     84                                        e.printStackTrace();
     85                                }
     86                                OutputStream os = new BufferedOutputStream(
     87                                                new FileOutputStream(finalPath + ".jpg"));
     88                                new ExifRewriter().updateExifMetadataLossless(tempFile, os,
     89                                                outputSet);
     90                                tempFile.delete();
     91                                os.close();
     92
    5393                        } catch (InterruptedException e1) {
    5494                                // TODO Auto-generated catch block
    5595                                e1.printStackTrace();
    5696                        } catch (IOException e) {
     97                                // TODO Auto-generated catch block
     98                                e.printStackTrace();
     99                        } catch (ImageReadException e) {
     100                                // TODO Auto-generated catch block
     101                                e.printStackTrace();
     102                        } catch (ImageWriteException e) {
    57103                                // TODO Auto-generated catch block
    58104                                e.printStackTrace();
Note: See TracChangeset for help on using the changeset viewer.