Criar imagem degradê

Eu preciso fazer uma imagem em degradê, pra isso eu precisaria colocar um for para que toda vez que a cor vermelha rodasse, diminuiria -1 dela.

Só que não to conseguindo implementar isso :frowning: .

A cor vermelha tá declarada como {255,0,0}.

Segue o código:

public static void main(String[] args) throws IOException {
        
	int width = 500;
	int height = 300;
	
	BufferedImage image= new BufferedImage(
		width, 
		height,
		BufferedImage.TYPE_INT_RGB
	);
	WritableRaster raster = image.getRaster();
	
	int c = 255;
	int[] green = new int[] {35,142,35};
	int[] white = new int[] {255,255,255};
	int[] red = new int[] {c,0,0};

	
	for (int h = 0; h < height; h++){
		for (int w = 0; w < width; w++){
			if (w < 500) 
			{
				raster.setPixel(w, h, red);
			}

Essa é a parte que eu estou tentando implementar:

			for (c = w; w < height; c--){
				if (w < 500) 
			{
				raster.setPixel(w, h, red);
			}
				
			}
		}
	}          
	
	ImageIO.write(image, "PNG", 
		new File("Degrade.png"));	
}
1 curtida

Fiz um debug e os seus for estão equivocados, mas, eu debug e não consegui entender como você quer gerar isso, existe algum explicação adicional que possa passar?

Então. É tipo assim eu criei a variável “c” para colocar o “255” que é a cor equivalente ao vermelho (poderia ser qualquer outra, mas coloquei esse por ser mais fácil).
E então coloquei no “int[] red = new int[] {c,0,0};”. Para que sempre que rodar o for pra imagem ficar vermelha, puder rodar um for que diminua 1 em “c”, fazendo com que a imagem vá ficando em degradê.
Os dois primeiros for rodaram e colocaram a imagem em vermelho, só que agora eu tenho que implementar outro for para diminuir, só que não consigo…
Não sei se deu pra entender, se não der pra entender pode deixar, agradeço de toda forma. :slight_smile:

public static void main(String[] args) throws IOException {
    int width = 500;
    int height = 300;

    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    WritableRaster raster = image.getRaster();

    int r = 255;
    int g = 0;
    int b = 0;

    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            int[] pixel = new int[] { r, g, b };
            raster.setPixel(x, y, pixel);
        }
        r--; // a cada linha decrementa o nível de vermelho
        if (r < 0) {
            r = 0;
        }
    }

    ImageIO.write(image, "PNG", new File("Degrade.png"));
}
2 curtidas

Deu certo!!
Nossa, muito obrigado mesmo!!!

1 curtida