# Image erstellen



## Mammon (24. Feb 2009)

Ich möchte von einer selber gezeichneten Componente ein Image erstellen. Habs mir createImage(int width,int height) versucht und da bekomm ich nichts zurück. Mit createImage(ImageProducer producer) wollt ich es auch versuchen aber da muss ich ja nen ImageProducer und nen ImageConsumer erstellen was ziemlich kompliziert ist.


----------



## Quaxli (24. Feb 2009)

Guck mal hier: http://www.java-forum.org/showthread.php?t=79250


----------



## Mammon (2. Mrz 2009)

Hab da ein paar Probleme mit dem Image erzeugen


```
BufferedImage bi=new BufferedImage(300,300,BufferedImage.TYPE_INT_ARGB);
        Graphics g1=bi.getGraphics();
        g1=this.mainPanel.getGraphics();

        JFrame frame2 = new JFrame("Picture");
        frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame2.add(new JScrollPane(new JLabel(new ImageIcon(bi))));
        frame2.setSize(300, 300);
        frame2.setLocation(200, 0);
        frame2.setVisible(true);
```

Welchen Typ soll ich für das BufferedImage verwenden???
getGrahpics() liefert immer null zurück! wiso??


----------



## Ebenius (2. Mrz 2009)

Du meinst _getGraphics_ in Zeile 3 liefert immer _null_ zurück (nicht in Zeile 2), richtig? Dazu sagt die API-Doc von Component.getGraphics():


> Creates a graphics context for this component. This method will return null if this component is currently not displayable.


Zeilen 2 und 3 ergeben ohnehin nicht viel Sinn zusammen, da Du erst den Graphics des Bildes holst und danach gleich wieder vergisst, indem Du ihn mit dem der Komponente überschreibst.

Der Typ INT_ARGB ist soweit erstmal okay.

Was willst Du eigentlich genau machen? Ich hab's noch nicht ganz verstanden.

Ebenius


----------



## Mammon (2. Mrz 2009)

ja ich will eine Componente als Bild haben, oder zumindest eine die ich selbst zeichne
mit Screenshot wäre es nicht die beste Lösung 
und jetzt weis ich nicht wie ich die Graphics eine Componete bekomme oder wie ich sie auf ein Bild übertrage


----------



## Ebenius (2. Mrz 2009)

Ich bin immer noch nicht sicher, ob das Deine Anforderungen trifft. Vorausgesetzt Deine Komponente wird angezeigt, würde dies funktionieren: [HIGHLIGHT="Java"]final Image img = new BufferedImage(
      myComponent.getWidth(), myComponent.getHeight(),
      BufferedImage.TYPE_INT_ARGB);
myComponent.paint(img.getGraphics());[/HIGHLIGHT]

Ebenius


----------



## Mammon (2. Mrz 2009)

danke hat mir sehr geholfen
hatte da nen kleinen denkfehler drinnen


----------

