3.8.8-SNAPSHOT
1 parent cebb9a5 commit fa8d5c2c30723a4744c9f5050938f584b7b7ee3c
@haya4 haya4 authored on 22 Dec 2022
Showing 3 changed files
View
18
src/main/java/osm/surveyor/matchtime/ImgFileFilter.java 0 → 100644
package osm.jp.gpx;
 
import java.io.File;
import java.io.FilenameFilter;
 
/**
* JPEGファイルフィルター
* @author yuu
*/
public class ImgFileFilter implements FilenameFilter {
 
@Override
public boolean accept(File dir, String name) {
return name.toUpperCase().matches(".*\\.JPG$");
}
 
}
View
47
src/main/java/osm/surveyor/matchtime/ImgFolder.java 0 → 100644
package osm.jp.gpx;
 
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
 
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
 
import org.apache.commons.imaging.ImageReadException;
import org.apache.commons.imaging.ImageWriteException;
import org.xml.sax.SAXException;
 
public class ImgFolder extends ArrayList<ImgFile> {
AppParameters params;
Path imgDir;
public ImgFolder(Path imgDir) {
this.imgDir = imgDir;
File[] files = imgDir.toFile().listFiles(new ImgFileFilter());
Arrays.sort(files, new FileSort());
for (File file : files) {
this.add(new ImgFile(file));
}
}
public Path getImgDir() {
return this.imgDir;
}
/**
* ファイル名の順序に並び替えるためのソートクラス
*
*/
static class FileSort implements Comparator<File> {
@Override
public int compare(File src, File target){
int diff = src.getName().compareTo(target.getName());
return diff;
}
}
}
View
51
src/main/java/osm/surveyor/matchtime/Restamp.java
import java.util.ResourceBundle;
import java.util.stream.Collectors;
import java.util.stream.Stream;
 
import osm.jp.gpx.ImgFolder;
 
/**
* 動画から一定間隔で切り出したIMAGEファイルの更新日時を書き換える
*
* @author yuu
int bCount1 = 0;
int bCount2 = 0;
boolean base1 = false;
boolean base2 = false;
ArrayList<Path> jpgFiles = new ArrayList<>();
 
// 指定されたディレクトリ内のJPEGファイルすべてを対象とする
try (Stream<Path> files = Files.list(Paths.get(imgDir.toString()))){
List<Path> sortedList = files.sorted(Comparator.naturalOrder()).collect(Collectors.toList());
 
for (Path p : sortedList) {
if (Files.exists(p) && Files.isRegularFile(p)) {
String filename = p.getFileName().toString();
if (filename.toUpperCase().endsWith(".JPG")) {
jpgFiles.add(p);
bCount1 += (base1 ? 0 : 1);
bCount2 += (base2 ? 0 : 1);
if (p.getFileName().equals(baseFile1.getFileName())) {
base1 = true;
}
if (p.getFileName().equals(baseFile2.getFileName())) {
base2 = true;
}
}
//try (Stream<Path> files = Files.list(Paths.get(imgDir.toString()))){
try (ImgFolder imgFolder = new ImgFolder(Paths.get(imgDir.toString()))){
for (ImgFile img : imgFolder) {
bCount1 += (base1 ? 0 : 1);
bCount2 += (base2 ? 0 : 1);
if (img.getFileName().equals(baseFile1.getFileName())) {
base1 = true;
}
}
if (!jpgFiles.isEmpty()) {
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");
if (img.getFileName().equals(baseFile2.getFileName())) {
base2 = true;
}
}
if (!imgFolder.isEmpty()) {
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
 
// imgDir内の画像ファイルを処理する
long span = this.baseTime2.getTime() - this.baseTime1.getTime();
span = span / (bCount2 - bCount1);
int i = 0;
System.out.println("-------------------------------");
System.out.println("Update last modified date time.");
for (Path jpgFile : jpgFiles) {
for (ImgFile img : imgFolder) {
long deltaMsec = (i - (bCount1 -1)) * span;
i++;
Calendar cal = Calendar.getInstance();
cal.setTime(this.baseTime1);