Bild zeichnen und speichern ohne Voransicht

terravotion

Erfahrenes Mitglied
Halli Hallo

Ich möchte eine Methode, der ich eine Farbe übergeben kann. Diese Methode erstellt mir dann ein 50x50 Pixel grosses Quadrat, gefüllt mit der Farbe, und speichert mir das als Datei.

Das Problem ist, dieser ganze Vorgang muss im Hintergrund ablaufen.


Ich hab versucht, diese Klasse von JFrame zu extenden und dann die aktuelle Graphicskomponente zu speichern. Speichern geht, aber ich bekomme immer das ganze Bild (Fensterinhalt, der ja grösser als das eigentliche Bild ist). Und als ich das Frame nicht angezeigt habe, ist demzufolge auch nichts in der Datei gewesen.

Vielen Dank für Tipps&Hilfe,
t*
 
Du musst dafür ein OffscreenImage nehmen, also eines was auch benutzt werden kann wenn es nicht sichtbar ist. Komponente wie JFrame werden nur gezeichnet wenn sie sichtbar sind.

Folgendes geht z.B.:
Java:
	public static void main(String[] args) {
		BufferedImage bi = new BufferedImage(50, 50, BufferedImage.TYPE_INT_RGB);
		int red = bi.getColorModel( ).getDataElement(new int[] {255, 0, 0}, 0);
		for (int y = 0; y < 50; y++) {
			for (int x = 0; x < 50; x++) {
				bi.setRGB(x, y, red);
			}
		}

		try {
			ImageIO.write(bi, "png", new File("neuBild.png"));
		}
		catch (IOException e) {
			e.printStackTrace( );
		}

	}
 
Hallo,
du kannst natürlich auch die Vorzüge von Java 2D benutzen:

Java:
public static void main(String[] args) {
        BufferedImage bi = new BufferedImage(50, 50, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = bi.createGraphics();
        g2.setColor(Color.RED);
        g2.fillRect(0,0, 50,50);
        try {
            ImageIO.write(bi, "png", new File("neuBild.png"));
        }
        catch (IOException e) {
            e.printStackTrace( );
        }
     }

Hier sieht man wieder:
Viele Wege fürhen nach Java !!

Grüße
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück