U
Unregistriert
Gast
Hallo leute,
ich habe es hinbekommen mit Java einen eine absichtlich beschädigte PPM Datei auszulesen, diese Bildinformationen möchte ich nun in eine jPanel zeichnen aber mir ist nicht so klar wie das gehen soll.
Hier mal der Quelltext der Klasse Dateileser
Einen Bildbetrachter habe ich auch schon Designt:
könnt ihr mir weiterhelfen?
ich habe es hinbekommen mit Java einen eine absichtlich beschädigte PPM Datei auszulesen, diese Bildinformationen möchte ich nun in eine jPanel zeichnen aber mir ist nicht so klar wie das gehen soll.
Hier mal der Quelltext der Klasse Dateileser
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author studentai
*/
import java.awt.Color;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Vector;
public class Dateileser {
public static void main(String []args) throws FileNotFoundException, IOException{
/*Hier wird ein BufferedReadererstellt der mittels InputStreamReader auf eine Datei
* zum lesen zugreifen kann um diese Block für Block zu bearbeiten
*/
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("mystery-load.ppm")));
StreamTokenizer st =new StreamTokenizer (br);
/*Mit hilfe dieser while Schleife werden die unötigen Informationen die
*im Dateiheader stehen ignoriert da diese keinen Aufschluss über den
* Farbcode des Bildes geben
*/
while(st.lineno()<7){
st.nextToken();
}//end while
/*Hier wird der Rest der Datei ausgelesenu. ein
*dreistelliges int Array erzeugt um alle drei Rot gelb Blau des
*Farbcodes zu spreichern
*/
int []farbe;
farbe = new int [3];
int index = 0;
Vector <Color> v= new Vector<Color>();
while(true)
{
//Hier wird der Wert eines Farbcodeblocks gespeichert
int type = st.nextToken();
if(type == st.TT_NUMBER){
farbe[index] = (int) st.nval;
index++;
//Ist der Index größer als 3 dann wird dieser auf 0 gesetzt
if(index == 3){
index = 0;
Color farben = new Color(farbe[0],farbe[1],farbe[2]);
v.add(farben);
}//end if
}//end if
if(type == StreamTokenizer.TT_EOF){
return ;
}//end if
}//end while
}//end main
}//end class
Einen Bildbetrachter habe ich auch schon Designt:
Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author studentai
*/
public class Bildbetrachter
{
// Datenfelder
private JFrame fenster;
private Bildflaeche bildflaeche;
/**
* Erzeuge einen Bildbetrachter und zeige seine GUI auf
* dem Bildschirm an.
*/
public Bildbetrachter()
{
fensterErzeugen();
}//end Konstruktor
// ---- Implementierung der Menü-Funktionen ----
/**
* 'Datei oeffnen'-Funktion: Öffnet einen Dateiauswahldialog zur
* Auswahl einer Bilddatei und zeigt das selektierte Bild an.
*/
private void dateiOeffnen()
{
Farbbild bild = BilddateiManager.gibBild();
bildflaeche.setzeBild(bild);
fenster.pack();
}//end dateiOeffnen
/**
* 'Beenden'-Funktion: Beendet die Anwendung.
*/
private void beenden()
{
System.exit(0);
}//end beenden
// ---- Swing-Anteil zum Erzeugen des Fensters mit allen Komponenten ----
/**
* Erzeuge das Swing-Fenster samt Inhalt.
*/
private void fensterErzeugen()
{
fenster = new JFrame("Bildbetrachter");
menuezeileErzeugen(fenster);
Container contentPane = fenster.getContentPane();
bildflaeche = new Bildflaeche();
contentPane.add(bildflaeche);
// Aufbau abgeschlossen - Komponenten arrangieren lassen
fenster.pack();
fenster.setVisible(true);
}
/**
* Die Menüzeile des Hauptfensters erzeugen.
* @param fenster Das Fenster, in das die Menüzeile eingefügt werden soll.
*/
private void menuezeileErzeugen(JFrame fenster)
{
final int SHORTCUT_MASK =
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
JMenuBar menuezeile = new JMenuBar();
fenster.setJMenuBar(menuezeile);
// Das Datei-Menü erzeugen
JMenu dateiMenue = new JMenu("Datei");
menuezeile.add(dateiMenue);
JMenuItem oeffnenEintrag = new JMenuItem("Öffnen...");
oeffnenEintrag.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_MASK));
oeffnenEintrag.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { dateiOeffnen(); }
});
dateiMenue.add(oeffnenEintrag);
JMenuItem beendenEintrag = new JMenuItem("Beenden");
beendenEintrag.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));
beendenEintrag.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { beenden(); }
});
dateiMenue.add(beendenEintrag);
}//end Menuezeileerzeugen
public static void main(String []args){
Bildbetrachter b1 = new Bildbetrachter();
b1.fensterErzeugen();
}//end main
}//end class
könnt ihr mir weiterhelfen?