126 lines
4.3 KiB
Java
126 lines
4.3 KiB
Java
import java.awt.AWTException;
|
|
import java.awt.Rectangle;
|
|
import java.awt.Robot;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.File;
|
|
import java.io.FilenameFilter;
|
|
import java.io.IOException;
|
|
|
|
import javax.imageio.ImageIO;
|
|
|
|
public class ImageCollector {
|
|
|
|
public String screenshotOutputDirectory;
|
|
public Rectangle gameWindowRectangle;
|
|
public Rectangle fullWindowRectangle;
|
|
public Robot robot;
|
|
|
|
/*
|
|
* Methods needed:
|
|
*
|
|
* - Capture screen window every N seconds
|
|
*
|
|
* initialize with: output directory, file name
|
|
*
|
|
* detect last file name
|
|
*/
|
|
|
|
public BufferedImage captureScreenshotGameWindow() throws IOException, AWTException {
|
|
return robot.createScreenCapture(gameWindowRectangle);
|
|
}
|
|
|
|
public ImageCollector(String screenshotOutputDirectory) throws AWTException {
|
|
initializeGameWindowRectangle();
|
|
initializeFullWindowRectangle();
|
|
this.screenshotOutputDirectory = screenshotOutputDirectory;
|
|
this.robot = new Robot();
|
|
}
|
|
|
|
private void initializeGameWindowRectangle() {
|
|
this.gameWindowRectangle = new Rectangle(Constants.GAME_WINDOW_OFFSET_X, Constants.GAME_WINDOW_OFFSET_Y, Constants.GAME_WINDOW_WIDTH, Constants.GAME_WINDOW_HEIGHT);
|
|
}
|
|
|
|
private void initializeFullWindowRectangle() {
|
|
this.fullWindowRectangle = new Rectangle(0, 0, Constants.FULL_WINDOW_WIDTH, Constants.FULL_WINDOW_HEIGHT);
|
|
}
|
|
|
|
public void collectImages(String itemName) throws IOException, InterruptedException, AWTException {
|
|
int itemCounter = getItemCounter(itemName);
|
|
int numImagesToCapture = 50;
|
|
for (int counter = itemCounter + 1; counter < itemCounter + numImagesToCapture + 1; counter++) {
|
|
captureAndSaveGameWindow(itemName, counter);
|
|
Thread.sleep(2000);
|
|
}
|
|
}
|
|
|
|
private int getItemCounter(String itemName) {
|
|
File[] listOfFiles = getFilesFromFolderThatStartWith(itemName);
|
|
int counter = 0;
|
|
for (File file : listOfFiles) {
|
|
counter = Math.max(counter, getItemNumberFromFile(file.getName()));
|
|
}
|
|
return counter;
|
|
}
|
|
|
|
/*public void blurTextFromImages() throws IOException, AWTException, InterruptedException {
|
|
File folder = new File("/home/dpapp/Videos/BlurredRandom/NonBlurred/");
|
|
File[] listOfImages = folder.listFiles();
|
|
//RandomDetector randomDetector = new RandomDetector();
|
|
int count = 0;
|
|
for (File file : listOfImages) {
|
|
System.out.println(count);
|
|
BufferedImage image = ImageIO.read(file);
|
|
BufferedImage blurredImage = RandomDetector.blurDialogueFromImage(image);
|
|
ImageIO.write(blurredImage, "png", new File("/home/dpapp/Videos/BlurredRandom/Blurred/blurredRandom" + count + ".png"));
|
|
count++;
|
|
}
|
|
}*/
|
|
|
|
private File[] getFilesFromFolderThatStartWith(String itemName) {
|
|
File folder = new File(screenshotOutputDirectory);
|
|
File[] listOfFiles = folder.listFiles(new FilenameFilter() {
|
|
public boolean accept(File file, String name) {
|
|
return name.startsWith(itemName);
|
|
}
|
|
});
|
|
return listOfFiles;
|
|
}
|
|
|
|
private int getItemNumberFromFile(String fileName) {
|
|
String itemNumber = fileName.substring(fileName.indexOf("_") + 1, fileName.indexOf("."));
|
|
return Integer.parseInt(itemNumber);
|
|
}
|
|
|
|
private void captureAndSaveGameWindow(String itemName, int fileCounter) throws IOException, InterruptedException, AWTException {
|
|
BufferedImage imageCaptured = robot.createScreenCapture(gameWindowRectangle);
|
|
String fileName = getFileName(itemName, fileCounter);
|
|
ImageIO.write(imageCaptured, "jpg", new File(fileName));
|
|
System.out.println("Wrote file: " + fileName);
|
|
}
|
|
|
|
public void captureAndSaveFullWindow() throws IOException {
|
|
BufferedImage imageCaptured = robot.createScreenCapture(fullWindowRectangle);
|
|
ImageIO.write(imageCaptured, "jpg", new File(getFileName("fullWindow", 0)));
|
|
System.out.println("Wrote file.");
|
|
}
|
|
|
|
private String getFileName(String itemName, int counter) {
|
|
return screenshotOutputDirectory + itemName + "_" + counter + ".jpg";
|
|
}
|
|
|
|
private void generateInventoryImages() throws AWTException, IOException {
|
|
Inventory inventory = new Inventory();
|
|
inventory.updateAndWriteAllInventoryImages();
|
|
}
|
|
|
|
public static void main(String[] args) throws Exception
|
|
{
|
|
ImageCollector imageCollector = new ImageCollector("/home/dpapp/Desktop/RunescapeAI/Images/");
|
|
//imageCollector.blurTextFromImages();
|
|
//imageCollector.collectImages("chatDialogue");
|
|
//imageCollector.generateInventoryImages();
|
|
//imageCollector.captureAndSaveFullWindow();
|
|
}
|
|
|
|
}
|