1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Woher werden Daten bei der Java Programmierung gezogen?

Dieses Thema im Forum "PHP & Co." wurde erstellt von Pettsy, 20.04.07.

  1. Pettsy

    Pettsy Gast

    Hallo,

    ich bin neu hier und habe gleich eine etwas dringliche Frage.

    Ich habe dieses Semester angefangen mit Java zu programmieren und habe jetzt ein riesen Problem.
    Unser Prof hat einen Code geschrieben, mit dem Bilder aus einem Verzeichnis gezogen werden können und dann mit Hilfe von Java Codes verändert werden können, z.B. eine Hälfte der Pixel schwarz, o.ä.

    Jetzt habe ich das Problem, dass der Code das Bild nicht findet. Ich habe meinen Code mit BlueJ geschrieben und wir haben schon versucht, das Bild im Projekt-Verzeichnis zu speichern, oder aber auch in dem Ordner aus dem heraus BlueJ gestartet wird. In beiden Fällen wird das Bild nicht gefunden.

    Hättet ihr evlt eine Idee für mich? Es wäre sehr wichtig, weil ich die Aufgabe nächste Woche schon wieder abgeben muss...

    Mein Prof kann mir leider auch nicht helfen, weil er sich mit Mac überhaupt nicht auskennt.

    Danke schonmal im vorraus.

    LG
    Hannah
     
  2. ChrisDD

    ChrisDD Gloster

    Dabei seit:
    21.02.04
    Beiträge:
    64
    Das Beste wäre, mal den Quellcode zu Posten.

    Gruß
    Chris
     
  3. Dadelu

    Dadelu Reinette Coulon

    Dabei seit:
    06.07.05
    Beiträge:
    939
    Wie schon gesagt wurde, Code posten, dann schauen wir mal weiter ;)
     
  4. Pettsy

    Pettsy Gast

    import java.awt.Graphics;

    import java.awt.Image;

    import java.awt.MediaTracker;

    import java.awt.Toolkit;

    import java.awt.event.WindowEvent;

    import java.awt.image.BufferedImage;

    import java.awt.image.PixelGrabber;

    import java.awt.*;

    import javax.swing.*;



    /**

    * Die Klasse Picture stellt Methoden zur Verf¸gung, um eine .jpg-Datei in einem Java-Programm von der

    * Festplatte zu laden und am Bildschirm anzuzeigen. Die Bildinformationen werden in einem 2-dimensionalen int-Array

    * gespeichert und kˆnnen manipuliert werden.

    *

    *

    * @author (Dirk Eisenbiegler)

    * @version (1.0)

    * @version (1.1) W. Taube: Titelleiste ber¸cksichtig, show(p, title) zus‰tzlich, paint() statt update(), Frame statt JFrame

    */

    class Picture extends Frame {



    private Image cImage;

    private static int menueheigth;

    private static int borderwidth;



    public Picture(Image image) {

    cImage = image;

    pack(); // erst nach pack() existieren gueltige Insets

    Insets insets = getInsets();

    borderwidth= insets.left;

    menueheigth = insets.top;

    }



    public void paint(Graphics g) {

    g.drawImage(cImage, 0+borderwidth, 0+menueheigth, this);

    }

    /**

    * zeigt das in pixels ¸bergebene Bild am Bildschirm an

    * @param pixels 2-dimensionales int-Array - enth‰lt die Bildinformationen im RGB-Format

    * @param name wird in der Titelzeile angezeigt

    */

    static void show(int[][] pixels, String name) {

    int width = pixels.length;

    int height = pixels[0].length;

    BufferedImage image =

    new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

    for (int x = 0; x < width; x++)

    for (int y = 0; y < height; y++)

    image.setRGB(x, y, pixels[x][y]);

    Picture p = new Picture(image);

    p.setSize(width+(2*borderwidth), height+menueheigth+borderwidth);

    p.setVisible(true);

    p.setTitle(name);

    p.repaint();

    p.addWindowListener(new java.awt.event.WindowAdapter() {

    public void windowClosing(WindowEvent e) {

    System.exit(0);

    }

    public void windowStateChanged(WindowEvent e) {

    e.getWindow().repaint();

    }

    public void windowActivated(WindowEvent e) {

    e.getWindow().repaint();

    }

    });

    }

    /**

    * zeigt das in pixels ¸bergebene Bild am Bildschirm an - Variante ohne Parameter name

    * @param pixels 2-dimensionales int-Array - enth‰lt die Bildinformationen im RGB-Format

    */

    static void show(int[][] pixels) {

    show(pixels, "Picture");

    }

    /**

    * laedt die mit filename uebergebene Datei in ein 2-dimensionales int-Array

    * @param filename Dateiname der .jpg-Datei als String

    * @return liefert einen Verweis auf einen 2-dimensionales int-Array mit den Bildinformationen zur¸ck.

    */

    public static int[][] load(String filename) {

    Image image = Toolkit.getDefaultToolkit().getImage(filename);

    Picture picture = new Picture(image);

    picture.setVisible(false);

    MediaTracker mediatracker = new MediaTracker(picture);

    picture.pack();

    try {

    mediatracker.addImage(image, 0);

    mediatracker.waitForAll();

    } catch (Exception x) {

    }

    int width = image.getWidth(picture);

    int height = image.getHeight(picture);

    picture.dispose();

    int p[] = new int[width * height];

    try {

    PixelGrabber pixelgrabber =

    new PixelGrabber(image, 0, 0, width, height, p, 0, width);

    pixelgrabber.grabPixels();

    } catch (InterruptedException ie) {

    ie.printStackTrace();

    }

    int pixels[][] = new int[width][height];

    for (int x = 0; x < width; x++)

    for (int y = 0; y < height; y++)

    pixels[x][y] = p[x + width * y];

    return pixels;

    }

    }

    Das ist der Code für den Befehl Picture.load, den hat unser Prof uns vorgegeben. bei dem markierten kommt die fehlermeldung

    class Bilder {

    public static void main(String[ ] args) {



    int [ ] [ ] p= Picture.load("Kyara1.jpg");



    Picture.show(p);

    }

    }

    das ist mein code, mit dem ich das bild dann laden wollte. der ist laut bluej auch so ok.

    danke dass ihr euch das anschauen wollt.

    LG
    Hannah
     
  5. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Du könntest mal versuchen das Bild mit einem absoluten Dateinamen zu referenzieren. Also wenn beispielsweise das Bild in deinem Home-Verzeichnis liegt, dann
    Code:
    int [ ] [ ] p= Picture.load("/Users/Pettsy/Kyara1.jpg");
    Das Beispiel nimmt an, dass dein Kurz-Name am System "Pettsy" lautet.
     

Diese Seite empfehlen