Oi! Essa é a minha primeira vez aqui. Eu sou iniciante, e queria saber oque eu estou fazendo de errado. Estou tentando trocar cores específicas de uma imagem, para poder dar opções de personalização para o usuário, mas não está funcionando muito bem.
public class Teste extends Entity {
public BufferedImage imagem;
public Teste(int x, int y, int width, int height, int speed, BufferedImage sprite) {
super(x, y, width, height, speed, sprite);
try {
imagem = ImageIO.read(getClass().getResource("/Imagem.png"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void tick() {
depth = 2;
this.ColorImg(imagem, 0xFFFFFFFF, Color.yellow);
}
public void ColorImg(BufferedImage img, int currentColorHex, Color color) {
int[] pixels = new int[img.getWidth()*img.getHeight()];
for(int xx = 0; xx < img.getWidth(); xx++) {
for(int yy = 0; yy<img.getHeight(); yy++) {
img.getRGB(0, 0, img.getWidth(), img.getHeight(), pixels, 0, img.getWidth());
int pixelAtual = pixels[xx + (yy * img.getWidth())];
if(pixelAtual == currentColorHex) {
pixelAtual = color.getRGB();
img.setRGB(xx, yy, pixelAtual);
}
}
}
}
public void render(Graphics g) {
g.drawImage(imagem, this.getX(), this.getY(), null);
}
Por mais que eu consiga trocar a cor dos pixels específicos, eu só consigo fazer isso com preto, vermelho e branco. As outras cores ou não aparecem ou colorem os pixels de preto. Já tentei procurar outras formas de fazer mas não consegui.
Por favor, edite seu post para formatar o código. De preferência, se puder postar a classe inteira ou um exemplo mínimo em que o “problema” acontece, aí fica mais fácil de ajudar.
Mto Obrigado, cara! Deu certo. Provavelmente o problema era não só o código, mas tbm o formato de imagem que eu estava usando (png), depois que eu troquei para bmp funcionou perfeitamente. Obrigado!