2

我一直在努力解决一个涉及我想用来创建图像文件(到服务器端目录)的处理草图的问题。在 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。这可以从未签名的小程序中用于将文件保存到客户端计算机上的文件系统中。

如果您尝试从小程序写入服务器上的目录,则不能直接执行此操作。您需要在服务器上创建一个上传表单,并可能用于HttpURLConnection向服务器发送 POST 请求。

于 2011-01-10T23:34:04.043 回答