Hallo, wie kann ich einen Grafikkontext in eine Datei speichern. Der folgenden Code lädt eine Grafik und speichert sie wieder. Zwischen durch wird ein Text im Grafikkontext in die Grafik eingefpügt. Wie kann ich diesen Grafikkontext speichern? Also das veränderte Bild?
import java.awt.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
public class ImgShowComponent extends Canvas
{
private BufferedImage img = null;
private String sDID = "";
private BufferedImage outImg;
ImgShowComponent( String sFile , String sID)
{
sDID = sID;
try{
img = ImageIO.read(new File(sFile));
} catch (IOException e) {
e.printStackTrace();
}
try{
ImageIO.write(img, "jpeg", new File("Stempel"+sDID+".jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void paint( Graphics g)
{
// Wie speichert man die veränderte Grafik?
Font myFont = new Font("Arial",Font.PLAIN,25);
g.setFont(myFont);
g.drawImage( img, 0, 0, this );
g.drawString("Dokument"+sDID,30,30);
g.dispose();
}
public Dimension getPreferredSize()
{
return new Dimension( img.getWidth( this ), img.getHeight( this ) );
}
public Dimension getMinimumSize()
{
return getPreferredSize();
}
}
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Du zeichnest scheinbar nur auf die Zeichenfläche des Canvas, und das jedesmal wenn die Zeichenfläche aufgefrischt wird. Wenn Du das Ergebnis als Datei speichern willst müsstest Du wohl erstmal ein Bild-Objekt erstellen (keine Ahnung wie die Klasse heißt, ich arbeite normalerweise nie mit AWT und Swing. Wird sicher was in der Richtung Image sein), und dann auf dessen Grafikkontext zeichnen. Anschließend kannst Du das Bitmap dann in einer Datei speichern...
Gruß
Borlander
Ja, das ist schon richtig. Ein im Speicher gehaltenes "BufferedImage" soll dafür vorgesehen sein. Das BufferedImage hat aber keine Methode um einen Text darauf zu schreiben , nur Methoden um einzellne Pixel zu setzen. Andererseits soll man mit buffimg.createGraphics() einen Kontext erzeugen können, den man der paint-Methode übergibt. Das hab ich alles ausprobiert. Der Compiler schluckt das auch aber das was ich in das Canvas zeichne wird einfach nicht gespeichert! Ich glaube die Frage ist
1. Wo erzeuge ich das BufferedImage
2. Wie bring ich paint dazu nicht nur in das Canvas, sondern auch in das BufferedImage zu schreiben.
Gruß Jürgen
Da kann ich nur auf die API-Referenz verweisen. Für solche Sachen gibt es meist ein Beispiel in der JavaDoc...
2. Wie bring ich paint dazu nicht nur in das Canvas, sondern auch in das BufferedImage zu schreiben.
Ins Bild zeichnen, in der Paint-Methode dann das Bild auf dem Canvas ausgeben.
Gruß
Borlander