Raster getPixels retornando tons errados

2 respostas
esmerick

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 :slight_smile:

2 Respostas

E

getPixels volta um valor de 32 bits que não é a luminescência do tom cinza, é algo que depende do tipo de imagem (ARGB, etc.)

esmerick

è, isso tinha colocado só no início… xD mas acabou que hoje fui rodar e esse erro de pegar as tonalidades erradas continuaram um tempo mas depois pararam… não sei o porquÊ mas…

Criado 7 de março de 2013
Ultima resposta 7 de mar. de 2013
Respostas 2
Participantes 2