Hallöchen,
ich habe ein Programm, welches einen Screenshot machen soll und dieses auf ein bestimmtes Bild, welches in dem Screenshot auch vorkommt. Nun ist das Problem allerdings, dass dieses Teilbild nicht genauso groß ist wie das gesamte Bild. Zunächst einmal lasse ich alle Pixel in die rgb-Werte zerlegen:
Doch wie gehe ich da jetzt jeweils durch und überprüfe ob das Bild vorhanden ist? Würde theoretisch das Bild in 36*23 Teile aufteilen (da so großn auch der Teilbereich der im Bild gesucht werden soll ist) und überprüfen ob ein Teil identisch ist. Hierzu hatte ich überlegt eine Image Klasse zu schreiben, wo das Bild jeweils ein zweidimensionales Array von den RGB werten beinhaltet. Von dieser Klasse würde ich dann ebenfalls wieder ein zweidimensionales Array bilden. Doch wie schreibe ich das mit den Schleifen auf? Theoretisch bräuchte ich doch ne 4-Fache ForSchleife oder? Allerdings bekomme ich mit folgendem Programmiercode ab der 31. Spalte eine ArrayIndexOutOfBoundsException
Der Fehler passiertder letzten Möglichkeit:
Oder ist es sogar ohne diese komplexe Logik von Schleifen möglich ein BufferedImage in mehrere gleichgroße Teile aufzuteilen, bevor die RGB Werte in Arrays abgespeichert werden etc.?
ich habe ein Programm, welches einen Screenshot machen soll und dieses auf ein bestimmtes Bild, welches in dem Screenshot auch vorkommt. Nun ist das Problem allerdings, dass dieses Teilbild nicht genauso groß ist wie das gesamte Bild. Zunächst einmal lasse ich alle Pixel in die rgb-Werte zerlegen:
Java:
for(int i=0; i<zBreite; i++)
{
for(int j=0; j<zHoehe; j++)
{
int rgb = screen.getRGB(i, j);
Color color = new Color(rgb);
red[i][j] = color.getRed();
blue[i][j] = color.getBlue();
green[i][j] = color.getGreen();
}
}
Java:
int[][] red = new int[zBreite][zHoehe];
int[][] green = new int[zBreite][zHoehe];
int[][] blue = new int[zBreite][zHoehe];
for(int i=0; i<zBreite; i++)
{
for(int j=0; j<zHoehe; j++)
{
int rgb = screen.getRGB(i, j);
Color color = new Color(rgb);
red[i][j] = color.getRed();
blue[i][j] = color.getBlue();
green[i][j] = color.getGreen();
}
}
int rot[][] = new int[zHeight][zWidth];
int gruen[][] = new int[zHeight][zWidth];
int blau[][] = new int[zHeight][zWidth];
for(int a=0; a<zeilen; a++)
{
for(int b=0; b<spalten; b++)
{
for(int i=0; i<zHeight; i++)
{
for(int j=0; j<zWidth; j++)
{
if(a!=0 && b!=0)
{
rot[i][j] = red[a*i][b*j];
gruen[i][j] = gruen[a*i][b*j];
blau[i][j] = blue[a*i][b*j];
}
else if(a==0 && b==0)
{
rot[i][j] = red[i][j];
gruen[i][j] = gruen[i][j];
blau[i][j] = blue[i][j];
}
else if(a!=0 && b==0)
{
rot[i][j] = red[i*a][j];
gruen[i][j] = gruen[i*a][j];
blau[i][j] = blue[i*a][j];
}
else if(a==0 && b!=0)
{
rot[i][j] = red[i][j*b];
gruen[i][j] = gruen[i][j*b];
blau[i][j] = blue[i][j*b];
}
}
}
}
}
Java:
else if(a==0 && b!=0)
{
rot[i][j] = red[i][j*b];
gruen[i][j] = green[i][j*b];
blau[i][j] = blue[i][j*b];
}
Oder ist es sogar ohne diese komplexe Logik von Schleifen möglich ein BufferedImage in mehrere gleichgroße Teile aufzuteilen, bevor die RGB Werte in Arrays abgespeichert werden etc.?