Namensraum | Vererbungshierarchie | Schnittstellen |
java.awt.image | Object Image BufferedImage |
RenderedImage WritableRenderedImage |
Kurzbeschreibung |
Eine Instanz ermöglicht die Speicherung eines Bildes. |
Bilder, die Teil eines Programms sind, werden als Hilfsmittel in der jar-Datei des Programms gespeichert und können von dort mit dem Classloader gelesen werden.
import java.awt.image.BufferedImage; import java.io.InputStream; import java.io.IOException; import javax.imageio.ImageIO;
...
BufferedImage bild = null; InputStream in = getClass().getClassLoader().getResourceAsStream("Bilddateien/confetti.jpg"); try { bild = ImageIO.read(in); in.close(); } catch (IOException ex) { System.out.println("Die verlangte Bilddatei konnte nicht geladen werden."); }
Ein Bild, das aus einer Datei gelesen wurde, enthält oft keinen Alpha-Kanal. Die Bildfarben sind also deckend. Wenn du ein solches Bild durchscheinend anzeigen will, musst du es zunächst in ein BufferedImage mit dem Typ TYPE_INT_ARGB kopieren. Anschließ:end kannst du die Filter-Operation RescaleOp verwenden, um in der Bildkopie die Alpha-Werte aller Bildpunkte nach deinen Wünschen zu ändern.
BufferedImage rgbImage; // hier ist ein Wert für rgbImage zu beschaffen BufferedImage bild; int w = rgbImage.getWidth(); int h = rgbImage.getHeight(); bild = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); Graphics gb = bild.createGraphics(); // Grafik-Tool erzeugen, das auf // das neue Bild zeichnen kann gb.drawImage(rgbImage, 0, 0, null); // altes Bild auf das // neue Bild kopieren gb.dispose(); // Grafik-Tool freigeben