Como mudar o brilho de uma imagem

Minha pergunta: Eu quero ser capaz de alterar o brilho de uma imagem de recurso e ter três instâncias como ImageIcons. Um com 50% de brilho (mais escuro), outro com 75% de brilho (um pouco mais brilhante) e finalmente outro com 100% de brilho (o mesmo que a imagem original). Eu também quero preservar a transparência.

O que eu tentei: Eu procurei por aí e parece que a melhor solução é usarRescaleOp, mas eu não consigo entender. Eu não sei o que é o scaleFactor e o offset. Aqui está o meu código para o que eu tentei.

public void initialize(String imageLocation, float regularBrightness, float focusedBrightness, float pressedBrightness, String borderTitle) throws IOException {
  BufferedImage bufferedImage = ImageIO.read(ButtonIcon.class.getResource(imageLocation));
  setRegularIcon(getAlteredImageIcon(bufferedImage, regularBrightness));
  setFocusedIcon(getAlteredImageIcon(bufferedImage, focusedBrightness));
  setPressedIcon(getAlteredImageIcon(bufferedImage, pressedBrightness));
  setTitle(borderTitle);
  init();
}

private ImageIcon getAlteredImageIcon(BufferedImage bufferedImage, float brightness) {
  RescaleOp rescaleOp = new RescaleOp(brightness, 0, null);
  return new ImageIcon(rescaleOp.filter(bufferedImage, null));
}

A ligação seria algo assim:

seeATemplateButton.initialize("/resources/templateIcon-regular.png", 100f, 75f, 50f, "See A Template");
//I think my 100f, 75f, 50f variables need to change, but whenever I change them it behaves unexpectedly (changes colors and stuff).

O que acontece com esse código: A imagem parece "invisível" Eu sei que está lá porque está em um JLabel com um evento clicado no mouse e que funciona muito bem. Se eu simplesmente pular a parte de mudança de brilho e dizersetRegularIcon(new ImageIcon(Button.class.getResource(imageLocation)); funciona muito bem, mas obviamente não é mais escuro.

O que eu acho que preciso Alguns ajudam a entender o queoffset, scaleFactor, e asfilter método mean / do e, consequentemente, que números devem ser dados para a variável de brilho.

Qualquer ajuda seria muito apreciada! Obrigado!

questionAnswers(4)

yourAnswerToTheQuestion