Frage

Ich habe mit einem Problem zu kämpfen eine Verarbeitungs Skizze beteiligt, die ich verwenden möchte, eine Bilddatei (zu einem serverseitigen Verzeichnis) zu erstellen. Im Java, verwende ich eine PImage der Leinwand, auf eine BufferedImage umgewandelt, die dann als Datei über ImageIO.write erstellt wird.

Es schafft die erfolgreich Datei, wenn sie als Skizze auf meinem System ausführen, wird im selben Ordner wie das Programm file.png. Das Problem ist, dass, wenn das Programm als Applet ausgeführt wird, ist es nicht mehr die Datei erstellt. Es wäre riesig, wenn jemand eine Eingabe hat, warum die Skizze des Programms kann das Bild erstellen, aber das Applet nicht.

Hier ein paar Schnipsel von dem, was ich verwende, wenn es keine Hilfe ist. Vielen Dank an Alle.

PImage pimg = get();
BufferedImage canvas = convertToBufferedImage(pimg);
File file = new File("./sketch/file.png");
try
{
  ImageIO.write(canvas, "PNG", file);
}
catch (Exception e) { println(e); }

Und hier ist die Methode, die die PImage zu einem BufferedImage Converting.

BufferedImage convertToBufferedImage(PImage pimg){
    PGraphics pg = createGraphics(width, height, JAVA2D);
    pg.image(pimg, 0, 0);
    BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB_PRE);
    Graphics2D g2d = img.createGraphics();
    g2d.drawImage((java.awt.Image)pg.image, 0, 0, width, height, this);
    g2d.finalize();
    g2d.dispose();
    return img;
}
War es hilfreich?

Lösung

I think it's just applet security restrictions preventing you from modifying the filesystem on the client machine.

Take a look at FileSaveService in JNLP. This can be used from an unsigned applet to save a file to the filesystem on the client machine.

If you are trying to write to a directory on the server from an applet, you cannot do this directly. You would need to create an upload form on the server and maybe use HttpURLConnection to send a POST request to the server.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top