# BufferedImage kopieren



## The_S (13. Okt 2005)

Hi, ich weiß dazu gibts schon zig Threads, aber ich dreh hier gleich am Rad. Warum hat dieser Code den gewünschten Effekt (ein Image auf ein anderes Zeichnen)


```
else if (source == paste) {
			curImg = new BufferedImage(old.getWidth(), old.getHeight(), BufferedImage.TYPE_INT_ARGB);
			Graphics2D comp2D = curImg.createGraphics();
			comp2D.drawImage(old, 0, 0, null);
			comp2D.drawImage(shownImg, posX3, posY3, null);
			comp2D.dispose();
		//	abgleichen();
			pic.setIcon(new ImageIcon(curImg));
			clipb = false;
			paste.setEnabled(false);
			pasteA.setEnabled(false);
			cut.setEnabled(true);
			copy.setEnabled(true);
			cut.setSelected(true);
		}
```

während dieser Code nicht funktioniert, sondern nur nochmal das selbe Image an der Stelle einfügt, an der eigentlich ein anderes erschienen sollte.


```
else if (source == paste) {
			curImg = new BufferedImage(old.getWidth(), old.getHeight(), BufferedImage.TYPE_INT_ARGB);
			Graphics2D comp2D = curImg.createGraphics();
			comp2D.drawImage(old, 0, 0, null);
			comp2D.drawImage(shownImg, posX3, posY3, null);
			comp2D.dispose();
			abgleichen();
		//	pic.setIcon(new ImageIcon(curImg));
			clipb = false;
			paste.setEnabled(false);
			pasteA.setEnabled(false);
			cut.setEnabled(true);
			copy.setEnabled(true);
			cut.setSelected(true);
		}

	void abgleichen() {
		
		shownImg = new BufferedImage(curImg.getWidth(), curImg.getHeight(), BufferedImage.TYPE_INT_ARGB);
		Graphics2D comp2D = shownImg.createGraphics();
		comp2D.drawImage(curImg, 0, 0, null);
      comp2D.dispose()
		pic.setIcon(new ImageIcon(shownImg));
	}
```


----------



## The_S (13. Okt 2005)

aber wenn ich vor dem aufruf der abgleich-methode noch ein


```
posX3 = 0;
posY3 = 0;
```

setze, funktionierts wieder. Ich check das nicht ???:L


----------



## André Uhres (17. Okt 2005)

Ich hab deine beiden Varianten getestet. Für mich funktionieren sie beide.

```
/*
 * ImagePosition.java
 */
import java.awt.*;
import java.awt.image.*;
import java.net.*;
import javax.imageio.*;
import javax.swing.*;
public class ImagePosition_1 {
    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel mainPanel = new JPanel();
        mainPanel.add(pic);
        f.getContentPane().add(mainPanel);
        f.setSize(400, 300);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
        try{
            URL url = new URL("http://images.thetimes.co.uk/TGD/picture/0,,223788,00.jpg");
            old = ImageIO.read(url);
            url = new URL("http://www.history.navy.mil/photos/images/g470000/g470275t.jpg");
            shownImg = ImageIO.read(url);
        }catch(Exception ex){ex.printStackTrace();}
        boolean code1 = true;
//        code1 = false;
        if(code1){
            System.out.println("code1");
            curImg = new BufferedImage(old.getWidth(), old.getHeight(), BufferedImage.TYPE_INT_ARGB);
            Graphics2D comp2D = curImg.createGraphics();
            comp2D.drawImage(old, 0, 0, null);
            comp2D.drawImage(shownImg, posX3, posY3, null);
            comp2D.dispose();
            pic.setIcon(new ImageIcon(curImg));
        }else{
            System.out.println("code2");
            curImg = new BufferedImage(old.getWidth(), old.getHeight(), BufferedImage.TYPE_INT_ARGB);
            Graphics2D comp2D = curImg.createGraphics();
            comp2D.drawImage(old, 0, 0, null);
            comp2D.drawImage(shownImg, posX3, posY3, null);
            comp2D.dispose();
            abgleichen();
            
        }
    }
    static void abgleichen() {
        
        shownImg = new BufferedImage(curImg.getWidth(), curImg.getHeight(), BufferedImage.TYPE_INT_ARGB);
        Graphics2D comp2D = shownImg.createGraphics();
        comp2D.drawImage(curImg, 0, 0, null);
        comp2D.dispose();
        pic.setIcon(new ImageIcon(shownImg));
    }
    
    private static BufferedImage old,shownImg,curImg;
    private static int posX3=130;
    private static int posY3=30;
    private static JLabel pic = new JLabel();
}
```


----------



## The_S (17. Okt 2005)

Hm ... dann muss der Fehler wohl wo anders liegen, obwohl ich mir das eigentlich sonst net erklären könnt ... ???:L . OK, danke, werde den Fehler woanders suchen.


----------

