- String imageName = image.getName();\r
- if (checkFile(imageName)) {\r
- Date itime = new Date(image.lastModified());\r
- Date uktime = new Date(itime.getTime() + delta);\r
- if ((uktime.getTime() >= gpxStartTime) && (uktime.getTime() <= gpxEndTime)) {\r
- Element trkpt = trkpt(map, uktime);\r
- if (trkpt != null) {\r
- Element wpt = createWptTag(image, uktime.getTime(), trkpt);\r
- String latStr = wpt.getAttribute("lat");\r
- String lonStr = wpt.getAttribute("lon");\r
- double latitude = Double.parseDouble(latStr);\r
- double longitude = Double.parseDouble(lonStr);\r
- \r
- String eleStr = "-";\r
- String magvarStr = "-";\r
- NodeList nodes = wpt.getChildNodes(); // 子ノードを取得\r
- for (int i4 = 0; i4 < nodes.getLength(); i4++) {\r
- Node node = nodes.item(i4);\r
- if (node != null) {\r
- switch (node.getNodeName()) {\r
- case "ele":\r
- eleStr = node.getFirstChild().getNodeValue();\r
- break;\r
- case "magvar":\r
- magvarStr = node.getFirstChild().getNodeValue();\r
- break;\r
- }\r
- }\r
- }\r
-\r
- System.out.print(String.format("%12s|", image.getName()));\r
- System.out.print(String.format("%20s ", dfjp.format(itime)));\r
- System.out.print(String.format("%20s|", dfjp.format(uktime)));\r
- System.out.print(String.format("%12s %12s|", latStr, lonStr));\r
- System.out.println(String.format("%8s|%6s|", eleStr, magvarStr));\r
- ret = true;\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
- if (jpegMetadata != null) {\r
- TiffImageMetadata exif = jpegMetadata.getExif();\r
- if (exif != null) {\r
- outputSet = exif.getOutputSet();\r
- }\r
- }\r
-\r
- if (outputSet == null) {\r
- System.out.println("added : new tiff output set");\r
- outputSet = new TiffOutputSet();\r
- }\r
-\r
- //---- EXIF_TAG_DATE_TIME_ORIGINAL / 「撮影日時/オリジナル画像の生成日時」----\r
- TiffOutputDirectory exifDir = outputSet.getOrCreateExifDirectory();\r
- {\r
- Calendar cal = GregorianCalendar.getInstance();\r
- cal.setTime(uktime);\r
- exifDir.removeField(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL);\r
- exifDir.add(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL, new SimpleDateFormat("yyyy:MM:dd HH:mm:ss").format(cal.getTime()));\r
- }\r
-\r
- //---- EXIF GPS_TIME_STAMP ----\r
- TiffOutputDirectory gpsDir = outputSet.getOrCreateGPSDirectory();\r
- {\r
- Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));\r
- cal.setTime(uktime);\r
- final String yearStr = yearFormatter.format(cal.get(Calendar.YEAR));\r
- final String monthStr = monthFormatter.format(cal.get(Calendar.MONTH) + 1);\r
- final String dayStr = dayFormatter.format(cal.get(Calendar.DAY_OF_MONTH));\r
- final String dateStamp = yearStr +":"+ monthStr +":"+ dayStr;\r
-\r
- gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_TIME_STAMP);\r
- gpsDir.add(GpsTagConstants.GPS_TAG_GPS_TIME_STAMP,\r
- RationalNumber.valueOf(cal.get(Calendar.HOUR_OF_DAY)),\r
- RationalNumber.valueOf(cal.get(Calendar.MINUTE)),\r
- RationalNumber.valueOf(cal.get(Calendar.SECOND)));\r
- gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_DATE_STAMP);\r
- 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
- }\r
-\r
- outDir.mkdir();\r
- ExifRewriter rewriter = new ExifRewriter();\r
- try {\r
- fos = new FileOutputStream(new File(outDir, imageName));\r
- rewriter.updateExifMetadataLossy(image, fos, outputSet);\r
- }\r
- finally {\r
- if (fos != null) {\r
- fos.close();\r
- }\r
- }\r
- }\r
-\r
- Element temp = getCopy(gpx.getOwnerDocument(), wpt);\r
- gpx.appendChild(temp);\r
- }\r
- }\r