mirror of
https://github.com/davpapp/PowerMiner
synced 2024-08-13 17:03:53 -04:00
86 lines
2.6 KiB
Java
86 lines
2.6 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;
|
||
|
|
||
|
/*
|
||
|
* Methods needed:
|
||
|
*
|
||
|
* - Capture screen window every N seconds
|
||
|
*
|
||
|
* initialize with: output directory, file name
|
||
|
*
|
||
|
* detect last file name
|
||
|
*/
|
||
|
|
||
|
public ImageCollector(String screenshotOutputDirectory) {
|
||
|
initializeGameWindowRectangle();
|
||
|
this.screenshotOutputDirectory = screenshotOutputDirectory;
|
||
|
}
|
||
|
|
||
|
private void initializeGameWindowRectangle() {
|
||
|
this.gameWindowRectangle = new Rectangle(103, 85, 510, 330);
|
||
|
}
|
||
|
|
||
|
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;
|
||
|
}
|
||
|
|
||
|
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 {
|
||
|
Robot robot = new Robot();
|
||
|
BufferedImage imageCaptured = robot.createScreenCapture(gameWindowRectangle);
|
||
|
String fileName = getFileName(itemName, fileCounter);
|
||
|
ImageIO.write(imageCaptured, "jpg", new File(fileName));
|
||
|
System.out.println("Wrote file: " + fileName);
|
||
|
}
|
||
|
|
||
|
private String getFileName(String itemName, int counter) {
|
||
|
return screenshotOutputDirectory + itemName + "_" + counter + ".jpg";
|
||
|
}
|
||
|
|
||
|
public static void main(String[] args) throws Exception
|
||
|
{
|
||
|
ImageCollector imageCollector = new ImageCollector("/home/dpapp/Desktop/RunescapeAI/TensorFlow/IronOre/");
|
||
|
imageCollector.collectImages("ironOre");
|
||
|
}
|
||
|
}
|