2

(サーバー側のディレクトリに)画像ファイルを作成するために使用したいProcessingスケッチに関する問題に苦労しています。Javaでは、キャンバスのPImageを使用してBufferedImageに変換し、ImageIO.writeを介してファイルとして作成します。

私のシステムでスケッチとして実行すると、ファイルが正常に作成されます。file.pngはプログラムと同じフォルダーに表示されます。問題は、プログラムがアプレットとしてエクスポートされると、ファイルが作成されなくなることです。プログラムのスケッチで画像を作成できるのに、アプレットでは作成できない理由について誰かが意見を持っていれば、それは非常に大きなことです。

これが助けになるなら私が使っているもののスニペットです。皆さんありがとう。

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); }

そして、これがPImageをBufferedImageに変換するメソッドです。

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;
}
4

1 に答える 1

1

クライアントマシンのファイルシステムを変更できないのは、アプレットのセキュリティ制限にすぎないと思います。

JNLPのFileSaveServiceを見てください。これは、クライアント マシンのファイル システムにファイルを保存するために、署名されていないアプレットから使用できます。

アプレットからサーバー上のディレクトリに書き込もうとしている場合、これを直接行うことはできません。サーバー上にアップロード フォームを作成し、サーバーにHttpURLConnectionPOST 要求を送信するために使用する必要があります。

于 2011-01-10T23:34:04.043 に答える