Grahics2D in Datei speichern
-
Hallo,
wie kann man ein Graphics2D in einer Datei speichern. Kann ich aus dem Graphics2D ein Image konstruieren oder etwas bekommen, mit dem ich den ImageFileOutputStream füttern kann?
-
Hilfe schrieb:
Kann ich aus dem Graphics2D ein Image konstruieren oder etwas bekommen, mit dem ich den ImageFileOutputStream füttern kann?
Nein und nein.
Dir sollte klar sein, dass ein "Graphics" oder "Graphics2D" selbst kein Bild ist. Das ist keine Leinwand oder so. "Graphics" und "Graphics2D" sind Werkzeuge, mit denen du deine Leinwand bemalen kannst. Das sind sozusagen deine Pinsel usw.! ...und als ob das noch nicht genug wäre, diese Pinsel lassen sich auch immer nur für eine bestimmte Leinwand nutzen. Jede Leinwand hat andere Pinsel. Mit anderen Worten: "Graphics" und "Graphics2D" sind Schnittstellen zu einem bestimmten Image oder ähnlichem, mit denen du auf dem Image oder ähnlichem Zeichenoperationen durchführen kannst.
...würde mich auch wundern, wenn man "Graphics" oder "Graphics2D" abspeichern kann. Das macht auch keinen Sinn.
-
Klar macht das Sinn ?!?
Geht ungefähr so:
GraphPanel zeichnung = new GraphPanel(); // da wo sonst gemalt wird BufferedImage bild = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = bild.getGraphics(); zeichnung.paintComponent(g); ImageIO.write(bild,"jpeg",...);
Halt mehr pseudo-code, reicht aber denk ich.
Jockel
-
Du speicherst "bild" ab und nicht "g". "bild" ist kein Graphics, sondern ein BufferedImage. Was sollte der Beitrag also?
-
Probier es bitte aus:
JFrame + JButton + JPanel, Panel z.B. gelb, dann
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { BufferedImage bild = new BufferedImage(jPanel1.getWidth(), jPanel1.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics g = bild.getGraphics(); jPanel1.paint(g); ImageIO.write(bild,"jpeg", new File("Test.jpeg")); } catch(IOException e) {}; }
Und schon hat man ein gelbes jpeg. Und das ist wohl genau das, was Hilfe:( haben
wollte.Jockel
-
Jockelx schrieb:
Und schon hat man ein gelbes jpeg. Und das ist wohl genau das, was Hilfe:( haben
wollte.Ne. Er wollte ein Graphics2D abspeichern. Wo hast du in seinem Beitrag etwas von JPEG, BufferedIages usw. gelesen?
-
Die Frage von Hilfe:( verlangt schon eine Menge Intuition.
Ich glaube aber dass mein Codeschnipsel das ist, was er haben wollte.@Hilfe:(
Wenn du noch da bist, dann klär uns auf!Jockel
-
man könnte Graphics2D auch serialisieren.
-
Gregor, bist du heute irgendwie schlecht gelaunt?
Natürlich will Hilfe eine "Leinwand" abspeichern... was sonst?