# Bilder ausgeben



## max56 (5. Mrz 2009)

Hi 
ich benutze Netbeens unter Windows und bin Anfänger -- ich würde jetzt aber doch gerne für ein kleines Programm wissen wie ich Bilder (das Format ist nicht wichtig) Ausgeben kann. Ich habe bereits bei Google gesucht und das hier gefunden :
[highlight=Java]
ImageComponent.java:
import java.awt.*;
import javax.swing.JComponent;
public class ImageComponent extends JComponent
{
private Image image;
public ImageComponent (Image image)
{
this.image = image;
setPreferredSize (new Dimension (image.getWidth(null),
image.getHeight(null)));
}
public void paintComponent (Graphics g)
{
g.drawImage(image,0,0,null);
}
}
ImageViewer.java:
import javax.swing.JFrame;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
public class ImageViewer extends JFrame
{
public ImageViewer (Image image, String imageTitle)
{
setTitle ("ImageViewer - " + imageTitle);
ImageComponent imageComponent = new ImageComponent (image);
getContentPane().add(imageComponent);
pack();
setResizable(false);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args)
{
if (args.length != 1)
{
System.out.println ("Falsche Nutzung!");
System.out.println ("Das Programm soll mit einer Bilddatei");
System.out.println ("als Argument aufgerufen werden.");
System.out.println ("Leerzeichen im Namen der Bilddatei");
System.out.println ("können auch zu diesem Fehler führen.");
System.exit(1);
}
try
{
File imageFile = new File (args[0]);
BufferedImage image = ImageIO.read(imageFile);
if (image == null)
{
System.out.println ("Bild konnte nicht dekodiert werden!");
System.exit(1);
}
String imageTitle = imageFile.getAbsolutePath();
ImageViewer imageViewer = new ImageViewer (image,imageTitle);
imageViewer.setVisible(true);
}
catch (IOException e)
{
System.out.println ("Datei konnte nicht geladen werden!");
System.exit(1);
}
}
}[/highlight]

Jedoch weiß ich nicht wo ich da jetzt den Pfad des Bildes auswählen kann ...
Wahrscheinlich ist es recht simpel aber ich komme (nach mehrfachem ausprobieren) nicht darauf  .
Ich würde über jegliche Hilfe freuen ...

max


----------



## Der Müde Joe (5. Mrz 2009)

>Jedoch weiß ich nicht wo ich da jetzt den Pfad des Bildes auswählen kann 

Ohne es ausprobiert zu haben oder den Quelltext angeschaut zu haben.
In der Konsole

java ImageViewer /path/to/the/image.xyz

dann gehts hier rein: String[] args
Hier wird getestet, obs auch ein Argument gibt: if (args.length != 1)
und hier wird das File erstellt: new File (args[0]);

EDIT:
>Geändert von L-ectron-X (Heute um 18:40 Uhr) Grund: Syntaxhighlighting 

Na so ganz ohne Quellcode wirds schwer.... ;-)


----------



## max56 (5. Mrz 2009)

ja ok danke  -- das :



> java ImageViewer /path/to/the/image.xyz



hat mir gefehlt ...


EDIT:
>Geändert von L-ectron-X (Heute um 18:40 Uhr) Grund: Syntaxhighlighting 

irgendwas habe ich wohl beim code falsch gemacht ich weiß nur nicht was


----------



## Ebenius (5. Mrz 2009)

max56 hat gesagt.:


> irgendwas habe ich wohl beim code falsch gemacht ich weiß nur nicht was



Das war ein Bug im Forum. Ist behoben. Der Code ist wieder da.

Ebenius


----------



## L-ectron-X (5. Mrz 2009)

Nee nee, ich habe nur mit den Code-Tags zu dem Zeitpunkt rumprobiert.


----------



## max56 (5. Mrz 2009)

Ja danke, ich bin recht neu hier wie kann ich das jetzt als geklärt abhacken ???


----------



## Der Müde Joe (5. Mrz 2009)

>wie kann ich das jetzt als geklärt abhacken ??? 

Im Moment geht das noch nicht (wegen Umzug)


----------



## max56 (5. Mrz 2009)

okay danke und ich habe ich schon gewundert -- dann ist gut ... 
aber danke für die antworten

-- 

muss ich das demnächst nachholen oder wie ???


----------



## Der Müde Joe (5. Mrz 2009)

>muss ich das demnächst nachholen oder wie ??? 

Hier wird gar nix abgehackt... ;-)

(nö..nö..schon ok)


----------



## max56 (5. Mrz 2009)

> Hier wird gar nix abgehackt... ;-



wie soll ich das jetzt verstehen  ??


----------



## Der Müde Joe (5. Mrz 2009)

abgehackt != abgehakt

Synonym für abhacken | Synonyme, Antonyme Wörter
Synonym für abhaken | Synonyme, Antonyme Wörter


----------



## max56 (6. Mrz 2009)

Achso  , dann ist gut  ....

ich schreibe das dann mal so, weil das mit dem abhaken ja nicht funktioniert ... :

DAS THEMA IST GEKLÄRT !!!

und ein großes Dankeschön an alle die mir geholfen haben ....


----------



## max56 (6. Mrz 2009)

Doch eine Frage habe ich noch wie kann ich den Source ändern damit der "Bild-Pfad" in ihm vorgegeben ist ??


----------



## Der Müde Joe (6. Mrz 2009)

File imageFile = new File("path/to/image.xyz");


----------



## max56 (6. Mrz 2009)

statt dem hier ??:
File imageFile = new File (args[0])


----------



## Der Müde Joe (6. Mrz 2009)

jackpot

(im Array args an der Stellte 0 steht das erste Argument von der Kommandozeile..)


----------



## max56 (6. Mrz 2009)

Ja danke, ich lerne immer mehr dazu ....

Dann ist es jetzt beantwortet , und danke an alle für die Geduld die sie mit mir hatten


----------



## max56 (6. Mrz 2009)

Hrr solangsam habe ich selbst kein Lust mehr wieso functioniert das so nicht ?? :




```
ImageComponent.java:
      import java.awt.*;
      import javax.swing.JComponent;
      public class ImageComponent extends JComponent
      {
      private Image image;
      public ImageComponent (Image image)
      {
      this.image = image;  10.
      setPreferredSize (new Dimension (image.getWidth(null),
      image.getHeight(null)));
      }
      public void paintComponent (Graphics g)
      {
      g.drawImage(image,0,0,null);
      }
      }
      ImageViewer.java:
      import javax.swing.JFrame;
      import java.awt.Image;
      import java.awt.image.BufferedImage;
      import java.io.*;
      import javax.imageio.ImageIO;
      public class ImageViewer extends JFrame
      {
      public ImageViewer (Image image, String imageTitle)
      {
      setTitle ("ImageViewer - " + imageTitle);
      ImageComponent imageComponent = new ImageComponent (image);
      getContentPane().add(imageComponent);
      pack();
      setResizable(false);
      setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
      }
      public static void main(String[] args)
      {
      if (args.length != 1)
      {
      System.out.println ("Falsche Nutzung!");
      System.out.println ("Das Programm soll mit einer Bilddatei");
      System.out.println ("als Argument aufgerufen werden.");
      System.out.println ("Leerzeichen im Namen der Bilddatei");
      System.out.println ("können auch zu diesem Fehler führen.");
      System.exit(1);
      }
      try
      {
      File imageFile = new File("path/to/image.xyz"); 
      BufferedImage image = ImageIO.read(imageFile);
      if (image == null)
      {
      System.out.println ("Bild konnte nicht dekodiert werden!");
      System.exit(1);
      }
      String imageTitle = imageFile.getAbsolutePath();
      ImageViewer imageViewer = new ImageViewer (image,imageTitle);
      imageViewer.setVisible(true);
      }
      catch (IOException e)
      {
      System.out.println ("Datei konnte nicht geladen werden!");
      System.exit(1);
      }
      }
      }
```

Ist doch alles richtig oder ??

Ich glaube ich gebe den Pfad falsch ein ... 
könnt ihr mir ein Beispiel geben wenn das Bild bsp. auf dem Desktop liegt ??



Ich weiß es ist nicht leicht mit


----------



## Der Müde Joe (6. Mrz 2009)

das if(args.lentgth.. muss natürlich weg...
Es wird überprüft, ob es genau ein Argument gibt von den Kommandzeile. Wenn nicht --> System.exit(1) (nomen est omen)
Da du kein Argument mehr gibts...exit..
Also den ganzen Block weg...

>Ich glaube ich gebe den Pfad falsch ein 

klar....

>könnt ihr mir ein Beispiel geben wenn das Bild bsp. auf dem Desktop liegt ??

bei linux:
File imageFile = new File("/home/user/Desktop/bild.png");
bei win:
File imageFile = new File("C:/Dokumente und Einstellungen/user/Desktop/bild.png");

wobei für Win keine Garantie

EDIT:
das C Doppelpunkt Frontslash will nicht...musst du dir dazudenken bei Win


----------



## max56 (6. Mrz 2009)

ok danke jetzt habe ich es verstanden


----------



## Der Müde Joe (6. Mrz 2009)

oder nimm das hier:

```
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class PaintClass extends JFrame {

	public PaintClass() {
		super();
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

	public static void main(String[] args) throws IOException {
		PaintClass pc = new PaintClass();
		// hier Pfad angeben-----------------------
		String path = "/home/user/Desktop/bild.jpg";
		// -----------------------------------------
		BufferedImage image = ImageIO.read(new File(path));
		JPanel panel = new PaintPanel(image);
		pc.getContentPane().add(panel);
		pc.setSize(400, 400);
		pc.setVisible(true);
	}

	static class PaintPanel extends JPanel {

		private BufferedImage image;

		public PaintPanel(BufferedImage image) {
			this.image = image;
		}

		@Override
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
		}
	}
}
```


----------



## max56 (6. Mrz 2009)

ja ok danke -- war alles sehr hilfreich -- eig. hätte ich da ja auch in meinem Buch nachgelesen, aber da steht nur wenig über grafiken (eig. nichts ) ... deswegen...


----------

