Converter Imagem Escalas de Cinza para colorida

olá pessoal gostaria de passar a imagem em tons de cinza para colorido, de colorido pra tons de cinza tenho o seguinte código:

//for percorrendo altura e tamanho da imagem
for(int i = 0; i < imagem.getWidth(); i++)
{
	for(int j = 0; j < imagem.getHeight(); j++)
	{
		//cria uma nova cor, passando com parametro a cor obtida na posicao i, j
		Color c = new Color(imagem.getRGB(i,j));
		//guarda na variavel os tom de vermelho, verde e azul e divide por 3
		//					int tomCinza = ((c.getRed()+c.getGreen()+c.getBlue())/3);

		int red = (int)(c.getRed() * 0.299);
		int green = (int)(c.getGreen() * 0.587);
		int blue = (int)(c.getBlue() *0.114);

		//cor criada recebe os tom de cinza
		//c = new Color(tomCinza, tomCinza, tomCinza);
		Color newColor = new Color(red+green+blue,red+green+blue,red+green+blue);
		//seta os pixels com a com os tom de cinza
		imagem.setRGB(i, j, newColor.getRGB());
         }
}

Como assim? Você quer colocar as cores originais de uma imagem em tons de cinza?

1 curtida

Sim :slight_smile:

o contrário, a imagem em cinza, colocar as cores originais

Isso não rola. Depois que você converte a imagem pra cinza, você não consegue desfazer. Em uma imagem em tons de cinza os componentes de cor são iguais, por exemplo [0, 0, 0], [255, 255, 255], etc. Você não consegue recuperar esses valores…

obrigado :confused:

Pensando aqui, não sei exatamente o que você queria, mas se você quiser passar o efeito de “desfazer” para o seu usuário, você precisa de uma cópia da imagem colorida e desfazer substituindo a cinza pela colorida. Pode ser?

Sim :smiley:

Ja consegui :grin: