package osm.surveyor.util; import java.io.*; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; public class Exif extends Thread { public static final String TIME_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ss'Z'"; private static final String EXIF_DATE_TIME_FORMAT_STRING = "yyyy:MM:dd HH:mm:ss"; /** * 対象は '*.JPG' のみ対象とする * @return * @param name */ public static boolean checkFile(String name) { return ((name != null) && name.toUpperCase().endsWith(".JPG")); } /** * DateをEXIFの文字列に変換する。 * 注意:EXiFの撮影時刻はUTC時間ではない * @param localdate * @return */ public static String toEXIFString(Date localdate) { DateFormat dfUTC = new SimpleDateFormat(EXIF_DATE_TIME_FORMAT_STRING); return dfUTC.format(localdate); } /** * EXIFの文字列をDateに変換する。 * 注意:EXiFの撮影時刻はUTC時間ではない * @param timeStr * @return * @throws ParseException */ public static Date toEXIFDate(String timeStr) throws ParseException { DateFormat dfUTC = new SimpleDateFormat(EXIF_DATE_TIME_FORMAT_STRING); //dfUTC.setTimeZone(TimeZone.getTimeZone("UTC")); return dfUTC.parse(timeStr); } public static String toUTCString(Date localdate) { DateFormat dfUTC = new SimpleDateFormat(TIME_FORMAT_STRING); dfUTC.setTimeZone(TimeZone.getTimeZone("UTC")); return dfUTC.format(localdate); } public static Date toUTCDate(String timeStr) throws ParseException { DateFormat dfUTC = new SimpleDateFormat(TIME_FORMAT_STRING); dfUTC.setTimeZone(TimeZone.getTimeZone("UTC")); return dfUTC.parse(timeStr); } static String getShortPathName(File dir, File iFile) { String dirPath = dir.getAbsolutePath(); String filePath = iFile.getAbsolutePath(); if (filePath.startsWith(dirPath)) { return filePath.substring(dirPath.length()+1); } else { return filePath; } } /** * JPEGファイルフィルター * @author yuu */ class JpegFileFilter implements FilenameFilter { @Override public boolean accept(File dir, String name) { return name.toUpperCase().matches(".*\\.JPG$"); } } }