Olá,
Estou fazendo um trabalho de processamento de imagens digitais e me deparei com um erro durante a execução do prorama que me deixou com a cabeça quente.
Meu objetivo nessa parte do trabalho é simplesmente ler uma foto JPG, e fazer comparações entre os valores RGB de cada pixel.
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public static void main(String[] args) throws IOException {
BufferedImage foto = ImageIO.read(new File("imagem.jpg"));
for(int x = 0; x < foto.getHeight(); x++)
for(int y = 0; y < foto.getWidth(); y++) {
Color cor = new Color(foto.getRGB(x,y));
//Restante dos cálculos...
}//fim do for
}
Ao instânciar um objeto Color (linha 15) para receber a informação de cada pixel durante 2 laços de repetição(linhas e colunas) o erro em tempo de execução seguinte aparece:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!
at sun.awt.image.ByteInterleavedRaster.getDataElements(ByteInterleavedRaster.java:302)
at java.awt.image.BufferedImage.getRGB(BufferedImage.java:881)
Pensei na hora:“Ok. Eu apenas errei em algum número referente ao tamanho da imagem durante os laços.”
Não há nada de errado!
Testei uma série de cálculos do mesmo tipo e toda vez que uso algo que utiliza os métodos getDataElements ou setDataElements, originados da classe Raster, ao ler uma JPG encontro este erro.
Alguém poderia me ajudar?