Bilder ausgeben

Status
Nicht offen für weitere Antworten.

max56

Mitglied
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
 
Zuletzt bearbeitet von einem Moderator:
>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.... ;-)
 
Zuletzt bearbeitet:
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 🙁
 
Nee nee, ich habe nur mit den Code-Tags zu dem Zeitpunkt rumprobiert.
 
Zuletzt bearbeitet:
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 ???
 
Zuletzt bearbeitet:
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 ....
 
Doch eine Frage habe ich noch wie kann ich den Source ändern damit der "Bild-Pfad" in ihm vorgegeben ist ??
 
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 😉
 
Hrr solangsam habe ich selbst kein Lust mehr wieso functioniert das so nicht ?? :



Code:
      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 😉
 
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
 
oder nimm das hier:
Code:
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);
		}
	}
}
 
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...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben