【发布时间】:2011-01-10 23:21:35
【问题描述】:
我一直在努力解决一个涉及我想用来创建图像文件(到服务器端目录)的处理草图的问题。在 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;
}
【问题讨论】:
-
当我改变它时没有发现异常。小程序运行正常,但目录中没有生成图像文件。另一个奇怪的是,当它是一个草图时,如果路径只是“file.png”它实际上会在父目录中创建文件,因此我必须将路径声明为“./sketch/file.png”来保留它在与草图相同的目录中。当我将它导出为小程序时,如果我将其更改为“./applet/file.png”或只是“file.png”,它仍然无处可见。
-
试过了。作为草图运行时返回 true,.png 文件成功创建。作为小程序运行时,我仍然没有收到任何错误。
-
小程序无法访问服务器端文件。如果你想这样做,你必须编写一个 servlet。
标签: java file applet javax.imageio next-generation-plugin