Bom dia, estou tentando pegar a tonalidade dos pixels de uma imagem cinza e por motivos de performace, estou tentando usar o método getPixels da classe Raster, mas os valores que ela me retorna são diferentes dos que deveriam vir.
No meu método, tenho uma lista de Files que são imagens, e com cada uma faço essa media de pixels.
public void calculaTonalidades() throws Exception {
BufferedImage atual = null;
int largura, altura;
int media = 0;
for (int i = 0; i < arqLadrilhos.length; i++) {
try {
atual = ImageIO.read(arqLadrilhos[i]);
} catch (IOException ex) {
throw new Exception("Erro ao tirar média da tonalidade do ladrilho ");
}
largura = atual.getWidth();
altura = atual.getHeight();
tamanhoLadrilho = atual.getWidth();
System.out.println(atual.getRaster().getSample(0, 0, 0));
int[] pixels = atual.getRaster().getPixels(0, 0, largura, altura, (int[]) null);
for (int x = 0; x < pixels.length; x++) {
//pega o valor da luminescencia do tom cinza
media += pixels[x];
}
media = media / (largura * altura);
base.adicionarLadrilho(media, pixels);
media = 0;
}
base.limparArquivos();
}
Quando testo com a classe color ela me retorna o valor certo da imagem, mas com o raster a imagem que eu desenho depois sai mais clara do que a original…
A media com color fica +/- isso
media += new Color(atual.getRGB(x, y)).getRed();
e para "desenhar" a saida estou fazendo isso.
destino.getRaster().setPixels(x, y, tamLadrilho, tamLadrilho, pixels);
Já tentei trocar por get/setSamples() mas da na mesma…
Alguma ideia? Grato 