So ändern Sie die Helligkeit eines Bildes

Meine Frage: ich möchte in der Lage sein, um die Helligkeit zu ändern einer Ressource Bild und habe drei Instanzen des es als ImageIcons. Eine bei 50% Helligkeit (also dunkler), andere bei 75% Helligkeit (ein wenig heller), und schließlich ein weiteres bei 100% Helligkeit (die gleiche wie das original-Bild). Ich möchte auch die Transparenz erhalten.

, Was ich versucht habe: ich gesucht habe um und es sieht aus wie die beste Lösung ist die Verwendung RescaleOp, aber ich kann es einfach nicht herausfinden. Ich weiß nicht, was die scaleFactor, und der offset ist. Hier ist mein code für das, was ich versucht habe.

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));
}

Der Aufruf wäre etwas wie dieses:

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).

Was passiert mit diesem code: erscheint Das Bild "unsichtbar" ich weiß, es ist da, weil es auf ein JLabel mit einer Maus geklickt Fall drauf und das funktioniert Prima. Wenn ich die einfach überspringen Sie die Helligkeit ändern Teil und sagen setRegularIcon(new ImageIcon(Button.class.getResource(imageLocation)); funktioniert es ganz gut, aber offensichtlich ist es nicht dunkler.

, Was ich denke, ich brauche: Einigen helfen zu verstehen, was offset, scaleFactor, und die filter Methode bedeuten/machen, und folglich, welche zahlen für die variable Helligkeit.

Jede Hilfe wäre sehr geschätzt werden! Danke!

InformationsquelleAutor kentcdodds | 2012-10-19
Schreibe einen Kommentar