Hey,
ich habe eine eigene Klasse Image (MengineImage), die Pixel enthält.
Ich möchte diese eigenen Bilder zu BufferedImages machen und habe dafür erst bufferedImage.setRGB(...) verwandt. Das ist allerdings zu langsam (Image kopieren dauerte 150!! Milisekunden im Schnitt .. das ist für ein Spiel deutlich zu langsam 0=> 6-7 FPS).
Deshalb möchte ich nun ein Raster verwenden.
Hier ist mein code:
Fehler:
Exception in thread "Thread-0" java.lang.ArrayIndexOutOfBoundsException: 1080000
ich habe eine eigene Klasse Image (MengineImage), die Pixel enthält.
Ich möchte diese eigenen Bilder zu BufferedImages machen und habe dafür erst bufferedImage.setRGB(...) verwandt. Das ist allerdings zu langsam (Image kopieren dauerte 150!! Milisekunden im Schnitt .. das ist für ein Spiel deutlich zu langsam 0=> 6-7 FPS).
Deshalb möchte ich nun ein Raster verwenden.
Hier ist mein code:
Java:
public static BufferedImage getBufferedImage(MengineImage img)
{
System.out.println("A: "+img.getWidth()*img.getHeight());
long a = System.currentTimeMillis();
BufferedImage bImage = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB);
int[] pixels = new int[img.getHeight()*img.getWidth()];
for(int w = 0; w < img.getWidth(); w++)
{
for(int h = 0; h < img.getHeight(); h++)
{
pixels[ w + h * img.getWidth() ] = img.getPixel(w, h).getPixelValue();
}
}
bImage.getRaster().setPixels(0, 0, img.getWidth(), img.getHeight(), pixels);
System.out.println("Time: "+(System.currentTimeMillis()-a) );
return bImage;
}
Fehler:
Exception in thread "Thread-0" java.lang.ArrayIndexOutOfBoundsException: 1080000