# Bilder zusammenfügen



## FreddyStepp (3. Mai 2010)

Alsoo, erstmal hallo im Forum
Ich habe eine Anfängerfrage (Ich hab jetzt schon ein bisschen programmiert, aber eher so Grundlegendes).
Ich würde gerne ein Programm schreiben welches (in der Grundform) so aussieht:
Ich habe zwei Bilder und möchte sie öffnen und als eines speichern, dessen linke Hälfte von Bild 1 ist und dessen rechte Hälfte von Bild 2 ist.
Leider weiß ich gar nicht wie ich da anfangen soll...
Danke im Vorraus
Es soll ungefähr so aussehen:


----------



## mabuhay (3. Mai 2010)

Hallo

Schau dir mal BufferedImage und Graphics2D an.

1. Du erstellst ein neues leeres Bild
2. Du erstellst das 2D grafikobjekt
3. Du zeichnest deine zwei Bilder in das leere

Etwa so:

```
BufferedImage newImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = newImg.createGraphics();

//Draw the images
g2d.drawImage(icon1.getImage(), 0, 0, null);
g2d.drawImage(icon2.getImage(), icon2Xoffset, icon2Yoffset, null);
g2d.dispose();
```

Dieser Code zeichnet zwei Bilder (ImageIcon's) übereinander. Musst sie halt noch richtig zuschneiden.

mfg


----------



## FreddyStepp (3. Mai 2010)

und wie bekomme ich zwei bilder von meinem PC in das programm?


----------



## eRaaaa (3. Mai 2010)

In wie weit kennst du dich denn mit Swing und Konsorten aus?

Man könnte dir jetzt die Oberfläche in 10 Min zusammenbauen, das würde dir aber nichts bringen, daher nur ein paar Links,Suchwörter :

JTextField für den Pfad : How to Use Text Fields (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
Datei auswählen-Dialog : How to Use File Choosers (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
JButton für den Button ("speichern") und auf diesem einen ActionListener registrieren: How to Write an Action Listener (The Java™ Tutorials > Creating a GUI With JFC/Swing > Writing Event Listeners)
Allgemeines zu Bildern (laden usw.) : Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 17.6 Bilder

Bei konkreten Fragen, meld dich


----------



## FreddyStepp (3. Mai 2010)

also mit textfields und so kenn cih mich eingetlich schon aus (den dursuchen dialog brauch ich ja erstmal nich zwingend), nur die bilder sind das problem. naja ich werd mal versuchen mich durch das Java ist eine Insel -> Bilder durchzuarbeiten..
:rtfm:EDIT: bei dem J.i.e.I. stehen ja verschiedene Möglichkeiten Bilder zu benutzen... wie mach ich das denn dann?
danke


----------



## mabuhay (3. Mai 2010)

ImageIcon iicon = new ImageIcon(filename);


----------



## FreddyStepp (3. Mai 2010)

also wenn ich jetzt zum Beispiel folgendes habe:

```
// Anfang Methoden
  public void Doit_ActionPerformed(ActionEvent evt) {
   ImageIcon bild1 = new ImageIcon(Datei1.getText());
   ImageIcon bild2 = new ImageIcon(Datei2.getText());
  }
```
(Datei1&Datei2 sind Textfelder mit dem Pfad)
Was könnte ich jetzt machen um die Dateien in einer gleichgroßen Hälfte/Hälfte zu speichern?
lg freddy


----------



## mabuhay (3. Mai 2010)

FreddyStepp hat gesagt.:


> also wenn ich jetzt zum Beispiel folgendes habe:
> Was könnte ich jetzt machen um die Dateien in einer gleichgroßen Hälfte/Hälfte zu speichern?



Was meinst du genau? Wir haben dir doch die Beispiele gezeigt, wie du die zwei Bilder zeichnest. Erstelle die 2D Grafikobjekte wie in den gegebenen Beispielen. Dann hast du ja das BufferedImage schon und hast über Graphics2D darin gezeichnet. Das zuschneiden kannst du direkt machen wenn du die Bilder zeichnest:

```
g2d.drawImage(img, x, y, width, height, null);
```

Speichern dann evtl. mit sowas wie diesem hier? Bild zeichnen und speichern ohne Voransicht - Swing, Java2D/3D, SWT, JFace @ tutorials.de: Forum & Hilfe


```
try {
            ImageIO.write(bufferedImage, "png", new File("neuBild.png"));
        }
        catch (IOException e) {
            e.printStackTrace( );
        }
```

Einfach ein wenig googeln und ausprobieren 

mfg


----------

