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.935 Themen, 20.621 Beiträge
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