FITS Bild in Panel laden geht nicht

Eklaf

Neues Mitglied
Hallo alle zusammen
ich besuche zur zeit eine Technikerschule wo wir mit Eclipse und Java im programmieren unterrichtet werden. bei einer unserer Aufgaben komme ich nicht weiter und hoffe das mir jemand von hier weiterhelfen kann.

In dem Programm habe ich mehrere Oberflächen und will bei der Main_oberfläche ein Bild vom Typ FITS laden und ja Aufgabe ist es muß FITS sein und darf auch nicht in zb JPG gewandelt werden das wäre einfach ;) . Mir ist es bis jetzt lediglich gelungen den Header aus der Fitsdatei auszulesen. Ich bin für Hilfe jeglicher Art dankbar wenn ihr noch fragen habt legt los.???:L;(

Hier der Code der Main GUI :rtfm: :

Code:
package Oberfaechen;

import Hilfsklassen.*;
import org.eso.fits.FitsTestHDU;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.*;
import java.io.File;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;


public class OberflaecheMain extends JFrame implements ActionListener,MouseListener
{
	int iXPos = 0 ;
	int iYPos = 0 ;
	
	
	private JFrame mainFrame;
	private JPanel pnlMain;
	private JPanel pnlPos;
	private JPanel pnlBild;
	private JMenuBar menueLeiste;
	private JMenu menueDatei;
	private JMenu menueAusgleichsrechnung;
	private JMenu menueHilfe;
	private JMenuItem menueHilfeDokumentation;
	private JMenuItem menueHilfeInfo;
	private JMenuItem menueARDrucken;
	private JMenuItem menueARStarten;
	private JMenuItem menueProgBeenden;
	private JMenuItem menueBildLaden;
	private JLabel lblXPos;
	private JLabel lblYPos;
	private JLabel lblLeer;
	
	DateiLaden dateiLaden=new DateiLaden();
	FitsTestHDU fitsTest =new  FitsTestHDU();
	File fileDateiPfad;
//	ImageDisplay display;
	

public void los()
{
	try 
	{
	mainFrame=new JFrame("Astronomie Software");
	mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	menueLeiste=new JMenuBar();
	mainFrame.getContentPane().add(BorderLayout.NORTH,menueLeiste);
	
		menueDatei=new JMenu("Datei");
		menueLeiste.add(menueDatei);
		
			menueBildLaden=new JMenuItem("Bild laden");
			menueDatei.add(menueBildLaden);
			menueBildLaden.addActionListener(this);
			
			menueProgBeenden=new JMenuItem("Programm beenden");
			menueDatei.add(menueProgBeenden);
			menueProgBeenden.addActionListener(this);
		
		menueAusgleichsrechnung=new JMenu("Ausgleichsrechnung");
		menueLeiste.add(menueAusgleichsrechnung);
		
			menueARStarten=new JMenuItem("Ausgleichsrechnung starten");
			menueAusgleichsrechnung.add(menueARStarten);
			menueARStarten.addActionListener(this);
									
			menueARDrucken=new JMenuItem("Ausgleichsrechnung drucken");
			menueAusgleichsrechnung.add(menueARDrucken);
			menueARDrucken.addActionListener(this);
			
		menueHilfe=new JMenu("Hilfe");
		menueLeiste.add(menueHilfe);
			
			menueHilfeInfo=new JMenuItem("Info");
			menueHilfe.add(menueHilfeInfo);
			menueHilfeInfo.addActionListener(this);
			
			menueHilfeDokumentation=new JMenuItem("Dokumentation");
			menueHilfe.add(menueHilfeDokumentation);
			menueHilfeDokumentation.addActionListener(this);
			
	pnlMain=new JPanel();
	pnlMain.setLayout(new BoxLayout(pnlMain, BoxLayout.Y_AXIS));
	
	pnlPos=new JPanel();
	pnlPos.setLayout(new BoxLayout(pnlPos, BoxLayout.X_AXIS));
	
		lblXPos= new JLabel("X Position: "+iXPos);
		lblXPos.setSize(200, 20);
		
		lblLeer=new JLabel("          ");
		
		lblYPos=new JLabel("Y Position: "+iYPos);
		lblYPos.setSize(200, 20);
		
		pnlPos.add(lblXPos);
		pnlPos.add(lblLeer);
		pnlPos.add(lblYPos);
		
	//display = new ImageDisplay();
	pnlBild=new JPanel();
	pnlBild.setSize(600, 400);
	pnlBild.setBackground(Color.blue);
	//pnlBild.addMouseListener(this);	
	
	pnlMain.add(pnlPos);
	pnlMain.add(pnlBild);
	
	mainFrame.getContentPane().add(BorderLayout.CENTER,pnlMain);
	
	mainFrame.setSize(1024, 768);
	mainFrame.setVisible(true);
	}
	catch(Exception e)
	{
		System.out.println("Fehler: "+e.getMessage());
	}
}

	public void actionPerformed(ActionEvent e)
	{
		if (e.getSource()== menueBildLaden)
		{
			dateiLaden.setDateipfad();
		}
		if (e.getSource()== menueARStarten)
		{			
			OberflaecheAuswertung OberflaecheAusw = new OberflaecheAuswertung();	
			OberflaecheAusw.los();
			fitsTest.los(dateiLaden.getDateipfad(),OberflaecheAusw,dateiLaden);
		}
		if (e.getSource()== menueHilfeInfo)
		{
			OberflaecheInfo OberflaecheInfo = new OberflaecheInfo();
			OberflaecheInfo.los();
		}
		if (e.getSource()== menueProgBeenden)
		{
			System.exit(0);
		}
	}
	public void mouseClicked(MouseEvent mk) 
	{	
		if (mk.getSource()== pnlBild)
		{
			System.out.println("klick");
		}
		}
	public void mouseEntered(MouseEvent mk) 
		{	
		}
	public void mouseExited(MouseEvent mk) 
		{	
		}
	public void mousePressed(MouseEvent mk) 
		{
			
		}
	public void mouseReleased(MouseEvent e) 
		{	
		}
	}

Füge noch das gesamte Programm und ein Bild mit an:

Das gezippte Programm.

Eine FITS Datei.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
hab dein neues Thema mit Link auf dieses gelöscht, als Erinnerung geht eher nur hier paar Postings,
was ist denn die Frage? das Programm komplett laden und einarbeiten ist ja für jedermann viel verlangt,
von FITS habe ich noch nie gehört, aber gibts zumindest kurz bei Wikipedia
 

Eklaf

Neues Mitglied
Hi hatte in den anderen Bereich gepostet da hier keiner drauf reagiert hatte.

Zu deiner Frage ist eigentlich alles oben erklärt in dem Code wo dort ist möchte ich in das Panel pnlBild ein Bild vom Format FITS laden ohne es in ein anderes Format zu wandeln.
Da dies ein dummes Format ist und nicht leicht zu händeln ist ersuche ich hier um Hilfe.
Die Dateien habe ich angehängt falls wer den zusammenhang sehen will oder eine FITS Datei will um das Format zu sehen.

Wenn noch fragen sind legt los
 

remy

Aktives Mitglied
Hi,

hoffe, dein Anliegen ist noch aktuell. Hab mich mal kurz mit deinem Problem befasst. Dazu ein paar Worte:

FITS ist ein sehr spezielles Datei-Format, mit dem anscheinend nicht einfach nur ein Bild gespeichert ist, nein, nicht mal ein Bild gespeichert sein muss! Wenn ich das richtig sehe, wirst du nicht einfach durch zwei, drei Zeilen Code plötzlich das Bild in deinem Programm zu sehen bekommen.

Aber was wäre eine konstruktive Kritik ohne Verbesserungsvorschläge ;)

In deinem Projekt befand sich eine Bibliothek: jfit. Hat man euch diese Bib zum arbeiten gegeben?
Falls ja: falls noch nicht geschehen, solltest du dir die passende Dokumentation davon ansehen, durcharbeiten und gucken, ob und was du von den Funktionen gebrauchen kannst. Immerhin benutzt du bereits Teile davon.
Falls nein: erkundige dich, ob es nicht andere Bibs für dein Projekt gibt. Wenn ich das richtig gesehen habe, beinhaltet diese keine Funktion, die einfach eine mit Java zu verarbeitende Grafik aus der Datei ziehen kann.

Nun gehe ich aber mal davon aus, dass ihr mit dieser Bib arbeiten sollt. An dieser Stelle ist dein Wissen über das Format "FITS" gefragt. Irgendwie besteht es wohl aus Tabellen, Perspektiven, teilweise 1-3 Dimensionen, Informationen zu bestimmten Pixeln und und und. Diesen Aufbau solltest du wohl mit Hilfe der Funktionen in der Bib wiederfinden, die dir die nötigen Informationen aus der fits-Datei liefert.

Hab mir grade mal einen Plotter von der NASA besorgt, da sieht man erst mal die Ausmaßen einer solchen Datei :D

Also, beim besten Willen: deine Fragen musst du konkretisieren. Mit so einem speziellen Format (ich schätze, hier laufen nicht wirklich viele Astronomen rum oder wer sonst noch mit FITS arbeitet) und dieser Bib, die nicht ansatzweise Informationen liefert, die man mit mittlerem Aufwand Java zu verstehen geben könnte, wird dir hier so schnell keiner weiterhelfen können, außer du gibst mehr Informationen über den Aufbau des Formats bzw. der Bib preis.

VG
 

Neue Themen


Oben