diff --git a/src/main/java/osm/jp/gpx/AppParameters.java b/src/main/java/osm/jp/gpx/AppParameters.java index 62b06a9..dba4fb5 100644 --- a/src/main/java/osm/jp/gpx/AppParameters.java +++ b/src/main/java/osm/jp/gpx/AppParameters.java @@ -237,7 +237,7 @@ } public void store() throws FileNotFoundException, IOException { - this.store(new FileOutputStream(this.file.toFile()), "by AdjustTime"); + this.store(new FileOutputStream(this.file.toFile()), "by AdjustGpx"); } public void printout() { diff --git a/src/main/java/osm/jp/gpx/ImportPicture.java b/src/main/java/osm/jp/gpx/ImportPicture.java index 2904946..b72ac53 100644 --- a/src/main/java/osm/jp/gpx/ImportPicture.java +++ b/src/main/java/osm/jp/gpx/ImportPicture.java @@ -75,7 +75,7 @@ * ・画像ファイルの更新日付リストをCSV形式のファイルとして出力する。 * ・・結果は、取り込み元のGPXファイルとは別に、元ファイル名にアンダーバー「_」を付加した.ファイルに出力します。 * - * exp) $ java -cp .:AdjustTime.jar:commons-imaging-1.0-SNAPSHOT.jar [AdjustTime.ini] + * exp) $ java -cp .:adjustgpx-core.jar:commons-imaging-1.0.jar [AdjustTime.ini] * * @param argv * argv[0] = INIファイルのパス名 diff --git a/src/main/java/osm/jp/gpx/Restamp.java b/src/main/java/osm/jp/gpx/Restamp.java deleted file mode 100644 index acc465c..0000000 --- a/src/main/java/osm/jp/gpx/Restamp.java +++ /dev/null @@ -1,263 +0,0 @@ -package osm.jp.gpx; - -import java.io.*; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Comparator; -import java.util.Date; -import java.util.ResourceBundle; -import java.util.logging.LogManager; -import java.util.logging.Logger; -import org.apache.commons.imaging.ImageReadException; - -/** - * 動画から一定間隔で切り出したIMAGEファイルの更新日時を書き換える - * - * @author yuu - */ -public class Restamp extends Thread { - static public final String TIME_PATTERN = "yyyy-MM-dd HH:mm:ss z"; - - /** - * 実行中に発生したExceptionを保持する場所 - */ - public Exception ex = null; - - /** - * ログ設定プロパティファイルのファイル内容 - */ - protected static final String LOGGING_PROPERTIES_DATA - = "handlers=java.util.logging.ConsoleHandler\n" - + ".level=FINEST\n" - + "java.util.logging.ConsoleHandler.level=INFO\n" - + "java.util.logging.ConsoleHandler.formatter=osm.jp.gpx.YuuLogFormatter"; - - /** - * static initializer によるログ設定の初期化 - */ - public static final Logger LOGGER = Logger.getLogger("CommandLogging"); - static { - InputStream inStream = null; - try { - inStream = new ByteArrayInputStream(LOGGING_PROPERTIES_DATA.getBytes("UTF-8")); - try { - LogManager.getLogManager().readConfiguration(inStream); - // "ログ設定: LogManagerを設定しました。" - LOGGER.config("LoggerSettings: LogManager setuped."); - } - catch (IOException e) { - // LogManager設定の際に例外が発生しました. - String str = "LoggerSettings: Exception occered:" + e.toString(); - LOGGER.warning(str); - } - } - catch (UnsupportedEncodingException e) { - String str = "LoggerSettings: Not supported 'UTF-8' encoding: " + e.toString(); - LOGGER.severe(str); - } - finally { - try { - if (inStream != null) { - inStream.close(); - } - } catch (IOException e) { - String str = "LoggerSettings: Exception occored: "+ e.toString(); - LOGGER.warning(str); - } - } - } - - /** - * メイン - * 動画から一定間隔で切り出したIMAGEのファイル更新日時を書き換える - * - * ・画像ファイルの更新日付を書き換えます。(Exi情報は無視します) - * ※ 指定されたディレクトリ内のすべての'*.jpg'ファイルを処理の対象とします - * ・画像は連番形式(名前順に並べられること)の名称となっていること - * - * パラメータ - * ・対象のフォルダ(ディレクトリ内のすべての'*.jpg'ファイルを処理の対象とします) - * ・基準となる画像 - * ・基準画像の正しい日時 - * ・画像ファイルの間隔(秒) - * - * exp) $ java -cp .:AdjustTime.jar:commons-imaging-1.0-SNAPSHOT.jar [AdjustTime.ini] - * - * 1. 予め、動画から画像を切り出す - *   ソースファイル(mp4ファイル); 「-i 20160427_104154.mp4」 - * 出力先: 「-f image2 img/%06d.jpg」 imgフォルダに6桁の連番ファイルを差出力する - *   切り出し開始秒数→ 「-ss 0」 (ファイルの0秒から切り出し開始) - *   切り出し間隔; 「-r 30」 (1秒間隔=30fps間隔) - * ``` - * $ cd /home/yuu/Desktop/OSM/20180325_横浜新道 - * $ ffmpeg -ss 0 -i 20160427_104154.mp4 -f image2 -r 15 img/%06d.jpg - * ``` - * - * 2. ファイルの更新日付を書き換える - * ``` - * $ cd /home/yuu/Desktop/workspace/AdjustTime/importPicture/dist - * $ java -cp .:AdjustTime2.jar osm.jp.gpx.Restamp /home/yuu/Desktop/OSM/20180325_横浜新道/img 000033.jpg 2018-03-25_12:20:32 003600.jpg 2018-03-25_13:20:09 - * ``` - * - * @param argv - * argv[0] = 画像ファイルが格納されているディレクトリ imgDir - * argv[1] = 時刻補正の基準とする画像ファイル baseFile - * argv[2] = 基準画像ファイルの精確な撮影日時 "yyyy-MM-dd HH:mm:ss z" baseTime - * argv[3] = 時刻補正の基準とする画像ファイル baseFile - * argv[4] = 基準画像ファイルの精確な撮影日時 "yyyy-MM-dd HH:mm:ss z" baseTime - * - * @throws IOException - * @throws ImageReadException - */ - public static void main(String[] argv) throws Exception - { - if (argv.length < 5) { - System.out.println("java Restamp "); - return; - } - - File imgDir = new File(argv[0]); - if (!imgDir.exists()) { - // "[error] が存在しません。" - System.out.println(i18n.getString("msg.200")); - return; - } - if (!imgDir.isDirectory()) { - // "[error] がフォルダじゃない" - System.out.println(i18n.getString("msg.210")); - return; - } - - File baseFile1 = new File(imgDir, argv[1]); - if (!baseFile1.exists()) { - // "[error] が存在しません。" - System.out.println(i18n.getString("msg.220")); - return; - } - if (!baseFile1.isFile()) { - // "[error] がファイルじゃない" - System.out.println(i18n.getString("msg.230")); - return; - } - - DateFormat df1 = new SimpleDateFormat(TIME_PATTERN); - Date baseTime1 = df1.parse(argv[2]); - - File baseFile2 = new File(imgDir, argv[3]); - if (!baseFile2.exists()) { - // "[error] が存在しません。" - System.out.println(i18n.getString("msg.240")); - return; - } - if (!baseFile2.isFile()) { - // "[error] がファイルじゃない" - System.out.println(i18n.getString("msg.250")); - return; - } - - Date baseTime2 = df1.parse(argv[4]); - - Restamp obj = new Restamp(); - obj.setUp(imgDir, baseFile1, baseTime1, baseFile2, baseTime2); - } - - public File imgDir; - public Date baseTime1; - public Date baseTime2; - public int bCount1 = 0; - public int bCount2 = 0; - public long span = 0; - public ArrayList jpgFiles = new ArrayList<>(); - public static ResourceBundle i18n = ResourceBundle.getBundle("i18n"); - - public void setUp(File imgDir, File baseFile1, Date baseTime1, File baseFile2, Date baseTime2) throws Exception { - // 指定されたディレクトリ内のGPXファイルすべてを対象とする - File[] files = imgDir.listFiles(); - java.util.Arrays.sort(files, new java.util.Comparator() { - @Override - public int compare(File file1, File file2){ - return file1.getName().compareTo(file2.getName()); - } - }); - bCount1 = 0; - bCount2 = 0; - boolean base1 = false; - boolean base2 = false; - for (File file : files) { - if (file.isFile()) { - String filename = file.getName().toUpperCase(); - if (filename.toUpperCase().endsWith(".JPG")) { - this.jpgFiles.add(file); - bCount1 += (base1 ? 0 : 1); - bCount2 += (base2 ? 0 : 1); - if (file.getName().equals(baseFile1.getName())) { - base1 = true; - } - if (file.getName().equals(baseFile2.getName())) { - base2 = true; - } - } - } - } - - try { - DateFormat df2 = new SimpleDateFormat(TIME_PATTERN); - - // imgDir内の画像ファイルを処理する - long span = baseTime2.getTime() - baseTime1.getTime(); - span = span / (bCount2 - bCount1); - int i = 0; - System.out.println("-------------------------------"); - System.out.println("Update last modified date time."); - for (File jpgFile : this.jpgFiles) { - long deltaMsec = (i - (bCount1 -1)) * span; - i++; - Calendar cal = Calendar.getInstance(); - cal.setTime(baseTime1); - cal.add(Calendar.MILLISECOND, (int) deltaMsec); - - System.out.println(String.format("\t%s --> %s", df2.format(cal.getTime()), jpgFile.getName())); - jpgFile.setLastModified(cal.getTimeInMillis()); - } - System.out.println("-------------------------------"); - } - catch(Exception e) { - this.ex = new Exception(e); - } - } - - /** - * 対象は '*.JPG' のみ対象とする - * @return - * @param name - */ - public static boolean checkFile(String name) { - return ((name != null) && name.toUpperCase().endsWith(".JPG")); - } - - /** - * ファイル名の順序に並び替えるためのソートクラス - * - * @author hayashi - */ - static class FileSort implements Comparator { - @Override - public int compare(File src, File target){ - int diff = src.getName().compareTo(target.getName()); - return diff; - } - } - - /** - * JPEGファイルフィルター - * @author yuu - */ - class JpegFileFilter implements FilenameFilter { - @Override - public boolean accept(File dir, String name) { - return name.toUpperCase().matches(".*\\.JPG$"); - } - } -} \ No newline at end of file