Toy: Canvas und Jimi ?

Hallo zusammen,

ich bin dabei meine ersten Schritte mit Java zu wagen und schon lande ich bei euch ;-) ...

Ich lade ein Bild um dann mit Canvas darauf zu zeichnen, klappt alles bestens nur leider kriege ich das speichern der Änderungen nicht auf die Reihe.

Hier der Teil zum speichern:

String mime = "image/jpg";
            String filename = "test.jpg";
            System.out.print( "Saving " + filename + "..." );
            Jimi.putImage( mime, canvas, filename );
            System.out.println( "done" );

Da ich davon ausgehe das alle Änderungen die ich am Bild vornehme in "canvas" gespeichert werden versuche mit Jimi den Inhalt von canvas als Grafik Datei zu speichern.

Das Bild wird mittels

canvas = new DrawPanel(getImage(getCodeBase(), "1.jpg"));

geladen.

Kann ich dann überhaupt mit Jimi das Bild speichern, oder muss ich da eine Methode von canvas anwenden "habe darüber leider nichts gefunden". ?

Viele Grüße und Danke,

Toy

Ich hänge hier einfach mal den Quellcode vom ganzen Applet an, ist sonst nicht meine Art aber da ich zu wenig Ahnung von der ganzen Sache habe weiss ich nicht ob die Code Fragmente von oben reichen:

Fehlermeldung: Cannot find Symbol | in Zeile: Jimi.putImage( mime, canvas, filename );

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.image.*;
import com.sun.jimi.core.Jimi;

public class Draw extends java.applet.Applet {
    Button erase = new Button("Verwerfen");
    Button save  = new Button("Speichern");
    DrawPanel canvas;

public void init() {
        canvas = new DrawPanel(getImage(getCodeBase(), "1.jpg"));
        BorderLayout bord = new BorderLayout();
        setLayout(bord);
        add(canvas, "Center");
        Panel commandPanel = new Panel();
        commandPanel.add(erase);
        commandPanel.add(save);
        add(commandPanel, "South");
    }

public boolean action(Event evt, Object obj) {
        if (evt.target == erase) {
            canvas.numPoints = -1;
            canvas.repaint();
        }
        if (evt.target == save) {
            String mime = "image/jpg";
            String filename = "test.jpg";
            System.out.print( "Saving " + filename + "..." );
            Jimi.putImage( mime, canvas, filename );
            System.out.println( "done" );
        }
        return true;
    }
}

class DrawPanel extends Panel {
    Image picture;
    int[] drawX = new int[1000];
    int[] drawY = new int[1000];
    int numPoints = -1;

DrawPanel(Image inputImage) {
        picture = inputImage;
    }

public void paint(Graphics screen) {
        screen.drawImage(picture, 0, 0, this);
        screen.setColor(Color.black);
        for (int i = 0; i <= numPoints; i++) {
            screen.fillOval(drawX[i]-3, drawY[i]-3, 6, 6);
        }
    }

public void update(Graphics screen) {
        paint(screen);
    }

public boolean mouseDown(Event evt, int x, int y) {
        if (numPoints < 1000) {
            numPoints++;
            drawX[numPoints] = x;
            drawY[numPoints] = y;
        }
        repaint();
        return true;
    }

public boolean mouseDrag(Event evt, int x, int y) {
        mouseDown(evt, x, y);
        return true;
    }
}

  1. Nachtrag:

    ich bin in meinen schlauen büchlein drauf gestossen das sich das Bild samt Änderungen in einer Instanzvariable namens picture befindet ;-)

    Jimi.putImage( mime, picture, filename );

    Leider bekomme ich noch immer die gleiche Fehlermeldung:

    Cannot find Symbol
    variable picture

    Nun liegt wohl das Problem nurnoch darin den Inhalt von picture an den Teil des Applets zu übergeben der es speichert.

    Kann mir da vieleicht jemand auf die Sprünge helfen ?

    Viele Grüße & Danke,

    Toy