Galera, o problema é o seguinte, eu tenho uma imagem grande e tenho que quebrá-la em 4 pedaços(em tamanhos a se definir ainda), até ai blz. Como a imagem é em preto e branco(na verdade é em escala de cinza), eu crio um vetor para receber parte dos pontos em escala de cinza(a parte que eu “mandar”, por exemplo, os 300 primeiros pixels no eixo X até a altura máxima). O problema é quando eu uso método getSubImage() da imagem original para a imagem “cortada”. Ele dispara a exceção: java.awt.image.RasterFormatException: (y + height) is outside of Raster. Segue o código abaixo:
try {
BufferedImage image = ImageIO.read(new File("C:\\Users\\Hed\\Desktop\\imageColaco.bmp"));
BufferedImage imagem = new BufferedImage(1600,1000,BufferedImage.TYPE_INT_RGB);//essa imagem tem o mesmo tamanho da anterior
int novaAltura = 256;//não tem a ver com o tópico
int novaLargura = 255;//não tem a ver com o tópico
BufferedImage imagemRedimensionada = new BufferedImage(novaLargura,novaAltura, BufferedImage.TYPE_INT_RGB);//não tem a ver com o tópico
Graphics2D g2d = imagemRedimensionada.createGraphics();//não tem a ver com o tópico
for(int i=0;i<=400;i++){
for(int j=0;j<1000;j++){//1000 é a altura máxima
Color cor = new Color(image.getRGB(i,j));
int red = cor.getRed();
int blue = cor.getBlue();
int green = cor.getGreen();
if((red>=200 && red<=250) && (blue>=200 && blue<=250) && (green>=200 && green<=250)){ //algumas escalas de cinza
pontos.add(new Point(i,j));
}
}
}
int tamanho = pontos.size()-1;
imagem = image.getSubimage(pontos.get(0).x,pontos.get(0).y,pontos.get(tamanho).x,pontos.get(tamanho).y);//exceção dispara aqui - corto a imagem do primeiro ao último ponto
/*REDIMENSIONAMENTO PARA 255X256 */
g2d.drawImage(imagem,0,0,novaLargura,novaAltura,null);//nada a ver com o tópico
ImageIO.write(imagemRedimensionada,"bmp",new File("C:\\Users\\Hed\\Desktop\\impressao-digital3.bmp"));//nada a ver com o tópico
Valeu galera!!!