Add saving detected image

This commit is contained in:
Mateusz Kowalczyk 2020-01-23 18:50:38 +01:00
parent 9be0aed2da
commit 2c7b2cb4c4
5 changed files with 124 additions and 0 deletions

View File

@ -26,6 +26,7 @@ public class CacheStructureChecker {
private void setupPathsToCheck() {
this.listToCheck.add(this.path);
this.listToCheck.add(this.path + ThumbnailCacheService.DIRECTORY_NAME);
this.listToCheck.add(this.path + FacesCacheService.DIRECTORY_NAME);
}

View File

@ -0,0 +1,40 @@
package dev.mateuszkowalczyk.ffm.app.cache;
import dev.mateuszkowalczyk.ffm.data.database.face.Face;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class FacesCacheService implements Runnable {
protected static final String DIRECTORY_NAME = "/faces";
private final BufferedImage faceImage;
private String path;
public FacesCacheService (BufferedImage face) {
this.faceImage = face;
}
@Override
public void run() {
}
public void getPath(Face face) {
this.path = CacheService.getInstance().getPath() + DIRECTORY_NAME + "/" + face.getName() + ".PNG";
face.setPath(this.path);
}
public void createCachedFace() {
if (faceImage != null && this.path != null) {
File imageFile = new File(this.path);
try {
ImageIO.write(this.faceImage, "PNG", imageFile);
System.out.println(String.format("Saved on location: %s", imageFile.getAbsolutePath()));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

View File

@ -0,0 +1,48 @@
package dev.mateuszkowalczyk.ffm.data.database.face;
import dev.mateuszkowalczyk.ffm.data.database.annotation.Column;
import dev.mateuszkowalczyk.ffm.data.database.annotation.PrimaryKey;
import dev.mateuszkowalczyk.ffm.data.database.annotation.Table;
import java.util.UUID;
@Table
public class Face {
@Column(type = Column.Type.INT)
@PrimaryKey
private long id;
@Column
private String name;
@Column
private String path;
public Face() {
this.name = UUID.randomUUID().toString();
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}

View File

@ -0,0 +1,28 @@
package dev.mateuszkowalczyk.ffm.data.database.face;
import dev.mateuszkowalczyk.ffm.data.database.Dao;
import java.util.Optional;
public class FaceDAO implements Dao<Face> {
@Override
public Optional<Face> get(long id) {
return Optional.empty();
}
@Override
public void save(Face face) {
}
@Override
public void update(Face face) {
}
@Override
public void delete(Face face) {
}
}

View File

@ -1,5 +1,7 @@
package dev.mateuszkowalczyk.ffm.image;
import dev.mateuszkowalczyk.ffm.app.cache.FacesCacheService;
import dev.mateuszkowalczyk.ffm.data.database.face.Face;
import dev.mateuszkowalczyk.ffm.data.database.photo.Photo;
import dev.mateuszkowalczyk.ffm.utils.ResourceLoader;
import org.opencv.core.Core;
@ -44,6 +46,11 @@ public class FaceDetector implements Runnable {
matOfRect.toList().forEach(rect -> {
BufferedImage croppedImage = this.crop(bufferedImage, rect);
Face face = new Face();
FacesCacheService facesCacheService = new FacesCacheService(croppedImage);
facesCacheService.getPath(face);
facesCacheService.createCachedFace();
});
} catch (IOException e) {