# Zeichnen in BufferedImage und dieses in Datei speichern



## Jürgen124 (10. Aug 2008)

Hallo, bin nun aber wirklich entnervt - ich möchte ein kleines Wasserzeichen-Programm erstellen. Der folgende Code läd eine Dokument (jpg-Bild) und speichert es auch wieder. Mir will es aber einfach nicht gelingen etwas in das Bild zu zeichenen (einen Text). Wer weis wie das geht?


```
import java.awt.*;
import java.awt.event.*;
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 MyImgShow
{
  public static String dateiname;

  public static void main( String[] args )
  {
    dateiname = args[0];

    if( 2 > args.length )
      System.out.println( "Usage:\njava MyImgShow <ImgFile>\nE.g.:\njava MyImgShow x.png" );
    else
      new MyImgShow( args[0], args[1] ); 
  }

  MyImgShow( String sFile, String sID )
  {
     //BufferedImage bufImg = null ;
     BufferedImage bufImg = new BufferedImage(600, 800, BufferedImage.TYPE_INT_RGB);

     try
     {
          bufImg = ImageIO.read( new File(sFile) ) ;
     }
          catch(IOException ex)
     {
          //...
     }
     //???????????????????????????????????????????????????????????????????????????
     // Was läuft hier falsch ? Der String wird einfach nicht in das Bild geschrieben!!!!!
     // ???????????????????????????????????????????????????????????????????????????
     Graphics2D g = bufImg.createGraphics();
     Font myFont = new Font("Arial",Font.PLAIN,25);
     g.setFont(myFont);     
     //g.drawImage( bufImg, 0, 0, this ); 
     g.drawString("Dokument"+sID,30,30);
     g.drawRect(10,10,20,20);
     g.dispose();
     
     try
     {
         boolean boo = ImageIO.write(bufImg, "jpg", new File("Stempel"+sID+".jpg") ) ;
     }
     catch(IOException ex)
     {
         //...
     }



  }
```


----------



## Schnitter (10. Aug 2008)

ich würde mal Graphics g = bufImg.getGraphics() probieren
(und es danach ggf. nach Graphics2D casten).

Was anderes fällt mir grad nich auf *g*


----------



## Jürgen124 (10. Aug 2008)

Hab's mit 


```
Graphics g = bufImg.getGraphics();
```

probiert - doch das hat zunächst auch nicht funktioniert! Des Rätsels
Lösung: Die Zeichenmethoden waren auf Weiß eingestellt - und dort
wo ich gezeichnet habe ist EIN WEIßER HINTERGRUND!!!!!! 

Gruß
Jürgen


----------

