#by AdjustTime
-#Sun Jun 26 15:08:44 JST 2016
+#Mon Jun 27 00:09:43 JST 2016
GPX.gpxSplit=ON
-IMG.OUTPUT_FOLDER=/media/yuu/public/osm/GPXs/\u7DBE\u702C\u5E02\u5409\u5CA1_20160103
GPX.REUSE=ON
+IMG.OUTPUT_FOLDER=/media/yuu/public/osm/GPXs/\u7DBE\u702C\u5E02\u5409\u5CA1_20160103
+GPX.BASETIME=2016-01-03T15\:14\:02
IMG.SOURCE_FOLDER=/media/yuu/public/osm/GPXs/\u7DBE\u702C\u5E02\u5409\u5CA1_20160103
-GPX.BASETIME=2016-01-03T17\:56\:50
GPX.noFirstNode=ON
IMG.BASE_FILE=S2690001.JPG
// GPX: 生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も対象にする。 {ON | OFF}
public static String GPX_REUSE = "GPX.REUSE";
- // GPX: 基準時刻 {FILE_UPDATE | EXIF}
+ // GPX: 基準時刻 {FILE_UPDATE | EXIF_TIME}
public static String GPX_BASETIME = "GPX.BASETIME";
+ // GPX: ファイル更新時刻 yyyy:MM:dd HH:mm:ss
+ public static String IMG_TIME = "IMG.TIME";
+
// 対象IMGフォルダ:(位置情報を付加したい画像ファイルが格納されているフォルダ)
public static String IMG_SOURCE_FOLDER = "IMG.SOURCE_FOLDER";
return;\r
}\r
\r
+ obj.params = new AppParameters();\r
+\r
+ // 基準時刻(ファイル更新日時 | EXIF撮影日時)\r
+ obj.exifBase = (obj.params.getProperty(AppParameters.GPX_BASETIME).equals("EXIF_TIME") ? true : false);\r
+\r
// 基準時刻ファイルの「更新日時」を使って時刻合わせを行う。\r
File baseFile = new File(obj.imgDir, argv[1]);\r
- jptime = new Date(baseFile.lastModified());\r
+ if (obj.exifBase) {\r
+ ImageMetadata meta = Imaging.getMetadata(baseFile);\r
+ JpegImageMetadata jpegMetadata = (JpegImageMetadata)meta;\r
+ if (jpegMetadata == null) {\r
+ System.out.println("'"+ baseFile.getAbsolutePath() +"' にEXIF情報がありません");\r
+ return;\r
+ }\r
+ TiffImageMetadata exif = jpegMetadata.getExif();\r
+ if (exif == null) {\r
+ System.out.println("'"+ baseFile.getAbsolutePath() +"' にEXIF情報がありません");\r
+ return;\r
+ }\r
+ String dateTimeOriginal = exif.getFieldValue(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL)[0];\r
+ long lastModifyTime = (new SimpleDateFormat("yyyy:MM:dd HH:mm:ss")).parse(dateTimeOriginal).getTime();\r
+ jptime = new Date(lastModifyTime);\r
+ }\r
+ else {\r
+ jptime = new Date(baseFile.lastModified());\r
+ }\r
+\r
String timeStr = argv[2];\r
try {\r
dfjp.setTimeZone(TimeZone.getTimeZone("JST"));\r
}\r
catch (ParseException e) {\r
System.out.println("'"+ timeStr +"' の書式が違います("+ TIME_FORMAT_STRING +")");\r
+ return;\r
}\r
\r
// \r
}\r
\r
// その他のパラメータを読み取る\r
- obj.params = new AppParameters();\r
String paramStr = obj.params.getProperty(AppParameters.GPX_GPXSPLIT);\r
if ((paramStr != null) && (paramStr.toUpperCase().equals("ON"))) {\r
obj.param_GpxSplit = true;\r
obj.gpxFiles.add(obj.gpxDir); \r
}\r
\r
- obj.exifBase = (obj.params.getProperty(AppParameters.GPX_BASETIME).equals("EXIF_TIME") ? true : false);\r
- \r
System.out.println(" - param: number of gpxFiles = '"+ obj.gpxFiles.size() +"'");\r
System.out.println(" - param: imgDir = '"+ obj.imgDir.getAbsolutePath() +"'");\r
System.out.println(" - param: outDir = '"+ (obj.outDir == null ? "" : obj.outDir.getAbsolutePath()) +"'");\r
System.out.println(" - param: "+ AppParameters.GPX_NO_FIRST_NODE +"="+ obj.param_GpxNoFirstNode); \r
System.out.println(" - param: "+ AppParameters.GPX_REUSE +"="+ obj.param_GpxReuse); \r
System.out.println(" - param: "+ AppParameters.GPX_BASETIME +"="+ obj.params.getProperty(AppParameters.GPX_BASETIME) );\r
+ System.out.println(" - param: EXIF convert = '"+ String.valueOf(obj.exif) +"'");\r
\r
obj.start();\r
try {\r
}\r
\r
Date itime = new Date(image.lastModified());\r
+ if (this.exifBase) {\r
+ ImageMetadata meta = Imaging.getMetadata(image);\r
+ JpegImageMetadata jpegMetadata = (JpegImageMetadata)meta;\r
+ if (jpegMetadata == null) {\r
+ System.out.println("'"+ image.getAbsolutePath() +"' にEXIF情報がありません");\r
+ continue;\r
+ }\r
+ TiffImageMetadata exif = jpegMetadata.getExif();\r
+ if (exif == null) {\r
+ System.out.println("'"+ image.getAbsolutePath() +"' にEXIF情報がありません");\r
+ continue;\r
+ }\r
+ String dateTimeOriginal = exif.getFieldValue(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL)[0];\r
+ long lastModifyTime = (new SimpleDateFormat("yyyy:MM:dd HH:mm:ss")).parse(dateTimeOriginal).getTime();\r
+ itime = new Date(lastModifyTime);\r
+ }\r
+\r
Date uktime = new Date(itime.getTime() + delta);\r
System.out.print(String.format("%20s ", dfjp.format(itime)));\r
System.out.print(String.format("%20s|", dfjp.format(uktime)));\r
if (exifBase.isSelected()) {
try {
ImageMetadata meta = Imaging.getMetadata(timeFile);
- arg3_basetiome.argField.setText("imageView_Action : 412");
-
JpegImageMetadata jpegMetadata = (JpegImageMetadata)meta;
if (jpegMetadata != null) {
TiffImageMetadata exif = jpegMetadata.getExif();
this.params.setProperty(AppParameters.GPX_NO_FIRST_NODE, (noFirstNode.isSelected() ? "ON" : "OFF"));
this.params.setProperty(AppParameters.GPX_REUSE, (gpxReuse.isSelected() ? "ON" : "OFF"));
this.params.setProperty(AppParameters.GPX_SOURCE_FOLDER, arg4_gpxFolder.getText());
+ if (exifBase.isSelected()) {
+ this.params.setProperty(AppParameters.GPX_BASETIME, "EXIF_TIME");
+ }
+ else {
+ this.params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
+ }
this.params.setProperty(AppParameters.IMG_SOURCE_FOLDER, arg1_srcFolder.getText());
this.params.setProperty(AppParameters.IMG_BASE_FILE, arg2_baseTimeImg.getText());
- this.params.setProperty(AppParameters.GPX_BASETIME, arg3_basetiome.getText());
+ this.params.setProperty(AppParameters.IMG_TIME, arg3_basetiome.getText());
this.params.setProperty(AppParameters.IMG_OUTPUT_FOLDER, arg4_gpxFolder.getText());
try {
this.params.store();
//Create a file chooser
this.chooser = chooser;
- File sdir = new File(text);
- System.out.println("sdir="+ sdir.getAbsolutePath());
- if (sdir.exists()) {
- fc = new JFileChooser(sdir);
- }
- else {
- fc = new JFileChooser();
- }
-
- fc.setFileSelectionMode(chooser);
openButton = new JButton("選択...", AdjustTime.createImageIcon("images/Open16.gif"));
openButton.addActionListener(this);
public void actionPerformed(ActionEvent e) {
if (e.getSource() == openButton){
- fc = new JFileChooser(new File(this.argField.getText()));
- int returnVal = fc.showOpenDialog(ParameterPanelFolder.this);
+ System.out.println("ParameterPanelFolder.actionPerformed(openButton)");
+ File sdir = new File(this.argField.getText());
+ if (sdir.exists()) {
+ this.fc = new JFileChooser(sdir);
+ }
+ else {
+ this.fc = new JFileChooser();
+ }
+ this.fc.setFileSelectionMode(this.chooser);
+
+ int returnVal = this.fc.showOpenDialog(ParameterPanelFolder.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
- File file = fc.getSelectedFile();
+ File file = this.fc.getSelectedFile();
this.argField.setText(file.getAbsolutePath());
}
}