OSDN Git Service

[img all] properties
authorhayashi <hayashi.yuu@gmail.com>
Mon, 15 May 2017 16:43:47 +0000 (01:43 +0900)
committerhayashi <hayashi.yuu@gmail.com>
Mon, 15 May 2017 16:43:47 +0000 (01:43 +0900)
importPicture/src/osm/jp/gpx/ImportPicture.java
importPicture/src/osm/jp/gpx/matchtime/gui/AboutDialog.java
importPicture/src/osm/jp/gpx/matchtime/gui/AdjustTime.java

index 0fb6179..784fa35 100644 (file)
@@ -1,5 +1,6 @@
 package osm.jp.gpx;\r
 import java.io.*;\r
+import java.nio.channels.FileChannel;\r
 import java.text.DecimalFormat;\r
 import java.text.ParseException;\r
 import java.text.SimpleDateFormat;\r
@@ -179,7 +180,7 @@ public class ImportPicture extends Thread {
         \r
        paramStr = obj.params.getProperty(AppParameters.IMG_OUTPUT_ALL);\r
        if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) {\r
-               obj.param_GpxOutputWpt = true;\r
+               obj.param_ImgOutputAll = true;\r
        }\r
 \r
        paramStr = obj.params.getProperty(AppParameters.GPX_OUTPUT_WPT);\r
@@ -536,41 +537,48 @@ public class ImportPicture extends Thread {
 \r
                // 時刻uktimeにおける<magver>をtrkptに追加する\r
             Element trkptE = trkpt(map, uktime);\r
-            if (trkptE == null) {\r
-                System.out.println(String.format("%20s ", "Out of GPX logging time."));\r
-               continue;\r
-            }\r
-\r
-            TagTrkpt trkptT = new TagTrkpt(trkptE);\r
-\r
-               //Element wpt = createWptTag(image, uktime.getTime(), trkptE);\r
-            //String latStr = trkptT.lat.toString();\r
-            //String lonStr = trkptT.lon.toString();\r
-            double latitude = trkptT.lat;\r
-            double longitude = trkptT.lon;\r
-            \r
             String eleStr = "-";\r
-            if (trkptT.eleStr != null) {\r
-               eleStr = new String(trkptT.eleStr);\r
-            }\r
-            \r
             String magvarStr = "-";\r
-            if (trkptT.magvarStr != null) {\r
-               magvarStr = new String(trkptT.magvarStr);\r
-            }\r
-            \r
             String speedStr = "-";\r
-            if (trkptT.speedStr != null) {\r
-               speedStr = new String(trkptT.speedStr);\r
+            double latitude = 90.5D;\r
+            double longitude = 180.5D;\r
+            TagTrkpt trkptT = null;\r
+            if (trkptE == null) {\r
+                System.out.println(String.format("%20s ", "Out of GPX logging time."));\r
+                if (!this.param_ImgOutputAll) {\r
+                       continue;\r
+                }\r
+            }\r
+            else {\r
+                trkptT = new TagTrkpt(trkptE);\r
+\r
+               //Element wpt = createWptTag(image, uktime.getTime(), trkptE);\r
+                //String latStr = trkptT.lat.toString();\r
+                //String lonStr = trkptT.lon.toString();\r
+                latitude = trkptT.lat;\r
+                longitude = trkptT.lon;\r
+                \r
+                if (trkptT.eleStr != null) {\r
+                       eleStr = new String(trkptT.eleStr);\r
+                }\r
+                \r
+                if (trkptT.magvarStr != null) {\r
+                       magvarStr = new String(trkptT.magvarStr);\r
+                }\r
+                \r
+                if (trkptT.speedStr != null) {\r
+                       speedStr = new String(trkptT.speedStr);\r
+                }\r
+                System.out.print(String.format("%12s %12s|", (new Double(latitude)).toString(), (new Double(longitude)).toString()));\r
+                System.out.println(String.format("%8s|%6s|%6s|", eleStr, magvarStr, speedStr));\r
             }\r
 \r
-            System.out.print(String.format("%12s %12s|", (new Double(latitude)).toString(), (new Double(longitude)).toString()));\r
-            System.out.println(String.format("%8s|%6s|%6s|", eleStr, magvarStr, speedStr));\r
             ret = true;\r
+            FileOutputStream fos = null;\r
+            outDir.mkdir();\r
 \r
             if (exifWrite) {\r
                 TiffOutputSet outputSet = null;\r
-                FileOutputStream fos = null;\r
 \r
                 ImageMetadata meta = Imaging.getMetadata(image);\r
                 JpegImageMetadata jpegMetadata = (JpegImageMetadata)meta;\r
@@ -614,62 +622,63 @@ public class ImportPicture extends Thread {
                     gpsDir.add(GpsTagConstants.GPS_TAG_GPS_DATE_STAMP, dateStamp);\r
                 }\r
 \r
-                //---- EXIF GPS elevation/ALTITUDE ----\r
-                if (eleStr.equals("-") == false) {\r
-                    final double altitude = Double.parseDouble(eleStr);\r
-                    gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_ALTITUDE);\r
-                    gpsDir.add(GpsTagConstants.GPS_TAG_GPS_ALTITUDE, RationalNumber.valueOf(altitude));\r
-                }\r
-\r
-                //---- EXIF GPS magvar/IMG_DIRECTION ----\r
-                if (magvarStr.equals("-") == false) {\r
-                    final double magvar = Double.parseDouble(magvarStr);\r
-                    gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION);\r
-                    gpsDir.add(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION, RationalNumber.valueOf(magvar));\r
-                }\r
-\r
-                //---- EXIF GPS_ ----\r
-                final String longitudeRef = (longitude < 0 ? "W" : "E");\r
-                longitude = Math.abs(longitude);\r
-                final String latitudeRef = (latitude < 0 ? "S" : "N");\r
-                latitude = Math.abs(latitude);\r
-\r
-                gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF);\r
-                gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF, longitudeRef);\r
-                gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF);\r
-                gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF, latitudeRef);\r
-                {\r
-                    double value = longitude;\r
-                    final double longitudeDegrees = (long) value;\r
-                    value %= 1;\r
-                    value *= 60.0;\r
-                    final double longitudeMinutes = (long) value;\r
-                    value %= 1;\r
-                    value *= 60.0;\r
-                    final double longitudeSeconds = value;\r
-                    gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE);\r
-                    gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LONGITUDE,\r
-                            RationalNumber.valueOf(longitudeDegrees),\r
-                            RationalNumber.valueOf(longitudeMinutes),\r
-                            RationalNumber.valueOf(longitudeSeconds));\r
-                }\r
-                {\r
-                    double value = latitude;\r
-                    final double latitudeDegrees = (long) value;\r
-                    value %= 1;\r
-                    value *= 60.0;\r
-                    final double latitudeMinutes = (long) value;\r
-                    value %= 1;\r
-                    value *= 60.0;\r
-                    final double latitudeSeconds = value;\r
-                    gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE);\r
-                    gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LATITUDE,\r
-                            RationalNumber.valueOf(latitudeDegrees),\r
-                            RationalNumber.valueOf(latitudeMinutes),\r
-                            RationalNumber.valueOf(latitudeSeconds));\r
+                if (trkptE != null) {\r
+                       //---- EXIF GPS elevation/ALTITUDE ----\r
+                       if (eleStr.equals("-") == false) {\r
+                           final double altitude = Double.parseDouble(eleStr);\r
+                           gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_ALTITUDE);\r
+                           gpsDir.add(GpsTagConstants.GPS_TAG_GPS_ALTITUDE, RationalNumber.valueOf(altitude));\r
+                       }\r
+       \r
+                       //---- EXIF GPS magvar/IMG_DIRECTION ----\r
+                       if (magvarStr.equals("-") == false) {\r
+                           final double magvar = Double.parseDouble(magvarStr);\r
+                           gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION);\r
+                           gpsDir.add(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION, RationalNumber.valueOf(magvar));\r
+                       }\r
+       \r
+                       //---- EXIF GPS_ ----\r
+                    final String longitudeRef = (longitude < 0 ? "W" : "E");\r
+                    longitude = Math.abs(longitude);\r
+                    final String latitudeRef = (latitude < 0 ? "S" : "N");\r
+                    latitude = Math.abs(latitude);\r
+\r
+                    gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF);\r
+                    gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF, longitudeRef);\r
+                    gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF);\r
+                    gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF, latitudeRef);\r
+                    {\r
+                        double value = longitude;\r
+                        final double longitudeDegrees = (long) value;\r
+                        value %= 1;\r
+                        value *= 60.0;\r
+                        final double longitudeMinutes = (long) value;\r
+                        value %= 1;\r
+                        value *= 60.0;\r
+                        final double longitudeSeconds = value;\r
+                        gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE);\r
+                        gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LONGITUDE,\r
+                                RationalNumber.valueOf(longitudeDegrees),\r
+                                RationalNumber.valueOf(longitudeMinutes),\r
+                                RationalNumber.valueOf(longitudeSeconds));\r
+                    }\r
+                    {\r
+                        double value = latitude;\r
+                        final double latitudeDegrees = (long) value;\r
+                        value %= 1;\r
+                        value *= 60.0;\r
+                        final double latitudeMinutes = (long) value;\r
+                        value %= 1;\r
+                        value *= 60.0;\r
+                        final double latitudeSeconds = value;\r
+                        gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE);\r
+                        gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LATITUDE,\r
+                                RationalNumber.valueOf(latitudeDegrees),\r
+                                RationalNumber.valueOf(latitudeMinutes),\r
+                                RationalNumber.valueOf(latitudeSeconds));\r
+                    }\r
                 }\r
 \r
-                outDir.mkdir();\r
                 ExifRewriter rewriter = new ExifRewriter();\r
                 try {\r
                     fos = new FileOutputStream(new File(outDir, imageName));\r
@@ -680,11 +689,31 @@ public class ImportPicture extends Thread {
                         fos.close();\r
                     }\r
                 }\r
-            }\r
 \r
-            if (Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_WPT))) {\r
-               Element temp = createWptTag(image, itime.getTime(), trkptT.trkpt);\r
-                gpx.appendChild(temp);\r
+                if (Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_WPT))) {\r
+                       if (trkptT != null) {\r
+                       Element temp = createWptTag(image, itime.getTime(), trkptT.trkpt);\r
+                        gpx.appendChild(temp);\r
+                       }\r
+                }\r
+            }\r
+            else {\r
+               if (this.param_ImgOutputAll) {\r
+                       // EXIFの変換を伴わない単純なファイルコピー\r
+                       FileInputStream sStream = new FileInputStream(image);\r
+                       FileInputStream dStream = new FileInputStream(new File(outDir, imageName));\r
+                    FileChannel srcChannel = sStream.getChannel();\r
+                    FileChannel destChannel = dStream.getChannel();\r
+                    try {\r
+                        srcChannel.transferTo(0, srcChannel.size(), destChannel);\r
+                    }\r
+                    finally {\r
+                        srcChannel.close();\r
+                        destChannel.close();\r
+                        sStream.close();\r
+                        dStream.close();\r
+                    }\r
+               }\r
             }\r
         }\r
         return ret;\r
@@ -692,6 +721,7 @@ public class ImportPicture extends Thread {
        \r
     static Document document;\r
 \r
+\r
     /**\r
      * 2012-06-10T05:09:46Z  (日本時間の'2012-06-10T14:09:46')\r
      */\r
index 8e82bc4..dc72b4e 100644 (file)
@@ -55,7 +55,7 @@ public class AboutDialog extends Dialog
         okButton.setLabel("OK");
         okButton.setBounds(145,65,66,27);
         add(okButton);
-        label2 = new java.awt.Label("Copyright(C) 2014,2016, yuuhayashi \n The MIT License (MIT).",Label.RIGHT);
+        label2 = new java.awt.Label("Copyright(C) 2014,2017, yuuhayashi \n The MIT License (MIT).",Label.RIGHT);
         label2.setBounds(10,40,340,20);
         add(label2);
         setTitle("About... "+ AdjustTime.PROGRAM_NAME);
index c6e22c3..b22ee16 100644 (file)
@@ -25,8 +25,8 @@ import org.apache.commons.imaging.formats.tiff.constants.ExifTagConstants;
 public class AdjustTime extends JFrame
 {
     public static final String PROGRAM_NAME = "AdjustTime for JOSM";
-    public static final String PROGRAM_VARSION = "3.0";
-    public static final String PROGRAM_UPDATE = "2016/10/04";
+    public static final String PROGRAM_VARSION = "3.1";
+    public static final String PROGRAM_UPDATE = "2017/05/15";
        
     // Used for addNotify check.
     boolean fComponentsAdjusted = false;
@@ -49,6 +49,7 @@ public class AdjustTime extends JFrame
     ParameterPanelImageFile arg2_baseTimeImg;
     ParameterPanel arg3_basetiome;
     JCheckBox outputIMG;       // IMGの変換 する/しない
+    JCheckBox outputIMG_all;   // 'out of GPX time'でもIMGの変換をする {ON | OFF}
     JCheckBox exifON;          // EXIF 書き出しモード / !(EXIFの書き換えはしない)
     JCheckBox gpxOutputWpt;    // GPXに<WPT>を書き出す
     JCheckBox gpxOverwriteMagvar;      // ソースGPXの<MAGVAR>を無視する
@@ -119,6 +120,9 @@ public class AdjustTime extends JFrame
             else if (object == outputIMG) {
                outputIMG_Action(event);
             }
+            else if (object == outputIMG_all) {
+               outputIMGall_Action(event);
+            }
             else if (object == exifON) {
                exifON_Action(event);
             }
@@ -281,6 +285,9 @@ public class AdjustTime extends JFrame
         outputIMG = new JCheckBox("IMGの変換をする", Boolean.parseBoolean(params.getProperty(AppParameters.IMG_OUTPUT)));
         tmpPanel5.add(outputIMG);
 
+        outputIMG_all = new JCheckBox("GPXファイル時間外のファイルもコピーする", Boolean.parseBoolean(params.getProperty(AppParameters.IMG_OUTPUT_ALL)));
+        tmpPanel5.add(outputIMG_all);
+
         arg5_outputFolder = new ParameterPanelFolder("出力フォルダ: ", params.getProperty(AppParameters.IMG_OUTPUT_FOLDER));
         tmpPanel5.add(arg5_outputFolder);
 
@@ -338,6 +345,7 @@ public class AdjustTime extends JFrame
         arg2_baseTimeImg.argField.addActionListener(lSymAction);
         arg2_baseTimeImg.openButton.addActionListener(lSymAction);
         doButton.addActionListener(lSymAction);
+        outputIMG_all.addActionListener(lSymAction);
         exifON.addActionListener(lSymAction);
         gpxOutputSpeed.addActionListener(lSymAction);
         noFirstNode.addActionListener(lSymAction);
@@ -552,6 +560,9 @@ public class AdjustTime extends JFrame
                arg5_outputFolder.setEnabled(outputIMG.isEnabled());
     }
 
+    void outputIMGall_Action (ActionEvent event) {
+    }
+
     /**
      * checkbox[EXIF書き出し]を変更した場合のアクション
      * @param event
@@ -604,6 +615,7 @@ public class AdjustTime extends JFrame
         this.params.setProperty(AppParameters.IMG_TIME, arg3_basetiome.getText());
         this.params.setProperty(AppParameters.IMG_OUTPUT, String.valueOf(outputIMG.isSelected()));
         this.params.setProperty(AppParameters.IMG_OUTPUT_FOLDER, arg5_outputFolder.getText());
+        this.params.setProperty(AppParameters.IMG_OUTPUT_ALL, String.valueOf(exifON.isSelected()));
         this.params.setProperty(AppParameters.IMG_OUTPUT_EXIF, String.valueOf(exifON.isSelected()));
         this.params.setProperty(AppParameters.GPX_OVERWRITE_MAGVAR, String.valueOf(gpxOverwriteMagvar.isSelected()));
         this.params.setProperty(AppParameters.GPX_OUTPUT_SPEED, String.valueOf(gpxOutputSpeed.isSelected()));