2011-01-10 13 views
2

我一直在努力解決一個涉及Processing草圖的問題,我想用它來創建一個圖像文件(到服務器端目錄)。在Java中,我使用畫布的PImage,將其轉換爲BufferedImage,然後通過ImageIO.write將其創建爲文件。小應用程序不通過ImageIO.write創建圖像文件

它在我的系統上作爲草圖運行時成功創建文件,file.png出現在與程序相同的文件夾中。問題是當程序作爲applet導出時,它不再創建該文件。如果有人對爲什麼程序的草圖可以創建圖像但小程序無法提供任何輸入,這將是巨大的。

這裏有一些我正在使用的片段,如果它有任何幫助。謝謝大家。

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; 
} 
+0

當我改變它時沒有發現異常。小程序運行正常,但目錄中沒有生成映像文件。另一個奇怪的是,當它是一個草圖時,如果路徑只是「file.png」,它實際上是在父目錄中創建文件,因此我必須聲明路徑爲「./sketch/file.png」以保留它與草圖在同一個目錄中。當我將它作爲applet導出時,如果將其更改爲「./applet/file.png」或簡單地「file.png」,它仍然無處可見。 – Scott 2011-01-10 23:26:52

+0

試過了。以草圖形式運行時返回true,.png文件已成功創建。作爲applet運行時,我仍然沒有錯誤。 – Scott 2011-01-10 23:33:55

回答

1

我認爲這只是小程序的安全限制,無法修改客戶機上的文件系統。

在JNLP中查看FileSaveService。這可以從未簽名的小程序中使用,以將文件保存到客戶機上的文件系統。

如果您嘗試從小應用程序寫入服務器上的目錄,則無法直接執行此操作。您需要在服務器上創建一個上載表單,並可能使用HttpURLConnection向服務器發送POST請求。

相關問題