2013-11-21 61 views
1

我想保存與BufferedImage形成的圖像。我通過這樣做獲取BufferedImage使用JFileChooser保存與Java的PNG圖像

(BufferedImage) fg; 

fg是我的jPanel圖形的圖像。我成功地通過直接如下硬編碼的路徑保存圖像:

ImageIO.write((BufferedImage)fg,"png",new File("C:\\Users\\Geiger\\Documents\\test.png")); 

但是,當我試圖JFileChooser中加進來是保存出現是空白什麼也沒有,但JPanel的背景顏色的圖像。

我對我在利用JFileChooser所嘗試的代碼如下:

JFileChooser jfc = new JFileChooser(); 
int retVal = jfc.showSaveDialog(null); 
if(retVal==JFileChooser.APPROVE_OPTION){ 
    File f = jfc.getSelectedFile(); 
    String test = f.getAbsolutePath(); 
    ImageIO.write((BufferedImage)fg,"png",new File(test)); 
} 

編輯:爲了澄清在這個問題上多一點點: 的問題不是一個文件未出現其說使用JFileChooser對象時圖像不會出現在圖像上。

我更新的時候JFrame中有一個鼠標按下事件我的形象:

fg = jPanel2.createImage(jPanel2.getWidth(), jPanel2.getHeight()); 
+1

請確保您正在寫入的文件引用實際上是文件而不是目錄 – MadProgrammer

+1

爲什麼不只是'ImageIO.write((BufferedImage)fg,「png」,jfc.getSelectedFile())'?無需創建指向相同路徑的新文件對象。但是,這個問題很可能不在你發佈的代碼中,而是以你更新你的'fg'圖像的方式。 – haraldK

+0

@haraldk - 我已經試過了,但該文件仍然空白與jPanel的灰色背景。 – wmgeiger101x

回答

2

試着把這行代碼,我認爲這就是你所需要的:

ImageIO.write(buffer, "png", fileDialog.getSelectedFile()); 

希望幫助

0
Graphics2D graphics2D = image.createGraphics(); 
scribblePane.paint(graphics2D); 

使用這兩行代碼來添加圖形。