Como deixar um pixel transparente?

3 respostas
tiu_kraudio

Aê, galera. Estou criando uma aplicação que funciona da seguinte maneira: o usuário move um cursor sobre uma imagem (.png) e seleciona um determinado pixel desta. Ao fazer isso todos os outros pixels que não são iguais ao pixel selecionado mudam de cor, destacando as cores que correspondem àquela que o usuário selecionou. Com este simples código abaixo eu já consigo fazer isso, transformando os pixels diferentes do qual o usuário escolheu para a cor Preta:

// Recebo o pixel da imagem atraves de um cursor, ativado pelo usuario, que seta o x e o y
                int rgb_imagem = (imagem.getRGB(x, y));
            	
            	int largura = imagem.getWidth();
            	int altura = imagem.getHeight();

                //Percorro todos os pixels da imagem
            	for (int i=0; i<largura; i++)
            		for (int j=0; j<altura; j++){
                                //Variavel que recebe o valor do RGB atual
            			int rgb_destac = imagem.getRGB(i, j);
            		
                        //Verifico se o pixel atual é diferente do pixel setado anteriormente atraves do cursor	
                        if (rgb_destac != rgb_imagem){

                                //Deixo o pixel atual na cor Preta
                        	imagem.setRGB(i, j, 000);
                        }
            		}

Gostaria de saber se é possível fazer a mesma coisa, só que ao invés de deixar o pixel diferente na cor preta eu gostaria de deixá-lo transparente. Existe alguma maneira de fazer isso? Se existe é possível fazer o controle do grau de transparência do pixel? Como fazer isso?

Desde já agradeço,

[]s

3 Respostas

tiu_kraudio

Ninguém vai responder? :cry:

Se não dá prá mudar o fator de transparência existe alguma maneira de retirar o brilho da cor através do RGB?

B

O conceito de transparência é um pouco mais complicado:

Primeiro transparência significa que há uma frente e um fundo, duas imagens por exemplo, e quer que a imagem da frente fique um pouco transparente para podermos começar a ver as imagens no fundo. Ou seja, não é algo que você vá encontrar a menos que haja esta situação, que o sistema permita camadas de imagens.

E segundo, normalmente transparência é mais uma canal de “cor” na imagem, normalmente com a mesma quantidade de bits que outro canal. Também normalmente esse canal é referido com A, e junto com outros sistemas, para RGB vc tem RGBA, ou ARGB, 24 bits de cores para 32 bits, 8 bits por canal. Então tente encontrar algum objeto que tenha um método setRGBA.

tiu_kraudio

Bruno Laturner:
O conceito de transparência é um pouco mais complicado:

Primeiro transparência significa que há uma frente e um fundo, duas imagens por exemplo, e quer que a imagem da frente fique um pouco transparente para podermos começar a ver as imagens no fundo. Ou seja, não é algo que você vá encontrar a menos que haja esta situação, que o sistema permita camadas de imagens.

E segundo, normalmente transparência é mais uma canal de “cor” na imagem, normalmente com a mesma quantidade de bits que outro canal. Também normalmente esse canal é referido com A, e junto com outros sistemas, para RGB vc tem RGBA, ou ARGB, 24 bits de cores para 32 bits, 8 bits por canal. Então tente encontrar algum objeto que tenha um método setRGBA.

É, brother… acho que vou me aventurar então pelo HLS (ou HBS) que já possue um componente para tratamento de brilho… Aí ao invés de usar a idéia de uma imagem escura como plano de fundo basta tirar o brilho da imagem que já tenho em mãos…

Vlw pela dica…

[]s

Criado 20 de outubro de 2009
Ultima resposta 28 de out. de 2009
Respostas 3
Participantes 2