Ich will ein erstelltes subimage mit einem anderen Bild vergleichen und in 3 Kategorien einteilen.
Dazu habe ich folgende Methoden:
Vom nakedImage hab ich einen Teil in die Anhänge. Aus diesem nakedImage habe ich auch das Array img. Wenn es wie water aussieht soll es an der jeweiligen stelle in fullWaterRectangle auf true gesetzt werde.Wenn es wie land aussieht soll es an der jeweiligen stelle in fullLandRectangle auf true gesetzt werde.
Dies passiert aber nicht.
weiß jemand wieso?
Dazu habe ich folgende Methoden:
Java:
package Code;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
public class PathObjects implements Runnable {
public static boolean[][] fullWaterRectangle;
public static boolean[][] fullLandRectangle;
public static boolean[][] mixedRectangle;
public BufferedImage[][] img;
public BufferedImage nakedImage;
public BufferedImage land;
public BufferedImage water;
@Override
public void run() {
try {
this.nakedImage = ImageIO.read(getClass().getClassLoader().getResourceAsStream("Map/Zoomed-Map-Rastered-Naked.png"));
this.land = ImageIO.read(getClass().getClassLoader().getResourceAsStream("Map/Land.png"));
this.water = ImageIO.read(getClass().getClassLoader().getResourceAsStream("Map/Water.png"));
} catch (IOException e) {
e.printStackTrace();
}
PathObjects.fullLandRectangle = new boolean[Cns.MAP_RECTANGLE_AMMOUNT][Cns.MAP_RECTANGLE_AMMOUNT];
PathObjects.fullWaterRectangle = new boolean[Cns.MAP_RECTANGLE_AMMOUNT][Cns.MAP_RECTANGLE_AMMOUNT];
PathObjects.mixedRectangle = new boolean[Cns.MAP_RECTANGLE_AMMOUNT][Cns.MAP_RECTANGLE_AMMOUNT];
this.img = new BufferedImage[Cns.MAP_RECTANGLE_AMMOUNT][Cns.MAP_RECTANGLE_AMMOUNT];
setAllWaterRectanglesTo(false);
setAllRectangelsToTheirCategory();
}
public PathObjects() {}
private void setAllWaterRectanglesTo(boolean b) {
for (int i = 0; i < Cns.MAP_RECTANGLE_AMMOUNT; i++) {
for (int j = 0; j < Cns.MAP_RECTANGLE_AMMOUNT; j++) {
fullWaterRectangle[i][j] = b;
fullLandRectangle[i][j] = b;
mixedRectangle[i][j] = b;
}
}
}
private void setAllRectangelsToTheirCategory() {
for (int i = 0; i < Cns.MAP_RECTANGLE_AMMOUNT; i++) {
for (int j = 0; j < Cns.MAP_RECTANGLE_AMMOUNT; j++) {
img[i][j] = nakedImage.getSubimage(1 + 75 * i, 1 + 75 * j, 74, 74);
if (equals(water, img[i][j])) {
fullWaterRectangle[i][j] = true;
} else if (equals(land, img[i][j])) {
fullLandRectangle[i][j] = true;
} else {
mixedRectangle[i][j] = true;
}
}
}
}
public boolean equals(BufferedImage img, BufferedImage compareImage) {
if (img == null || compareImage == null)
return false;
if (img.getWidth() == compareImage.getWidth()) {
if (img.getHeight() == compareImage.getHeight()) {
for (int x = 0; x < img.getWidth(); x++) {
for (int y = 0; y < img.getHeight(); y++) {
if (img.getRGB(x, y) != compareImage.getRGB(x, y)) {
return false;
}
}
}
} else
return false;
} else
return false;
return true;
}
}
Vom nakedImage hab ich einen Teil in die Anhänge. Aus diesem nakedImage habe ich auch das Array img. Wenn es wie water aussieht soll es an der jeweiligen stelle in fullWaterRectangle auf true gesetzt werde.Wenn es wie land aussieht soll es an der jeweiligen stelle in fullLandRectangle auf true gesetzt werde.
Dies passiert aber nicht.
weiß jemand wieso?