2011-06-06 94 views
2

我已經存儲的Blob(PNG文件)到數據庫中,像這樣:如何將ImageIcon轉換回blob?

File file = new File("image.png"); 
FileInputStream fis = new FileInputStream(file); 
statement.setBinaryStream(1, fis, (int) file.length()); 

目前我使用此過程從DB獲得團塊圖像並將其轉換回使用的圖像:

Blob blob = results.getBlob(1); 
ImageIcon imageIcon = new ImageIcon(blob.getBytes(1L, (int) blob.length())); 

但是,我需要一個方法將ImageIcon中的圖像放回到數據庫中(而不是創建文件),然後將其存儲到磁盤,然後使用FileInputSteam讀取它。

編輯爲清楚起見 嘛,說我有一個存儲作爲標籤一個ImageIcon內部的圖像。我知道如何將它放入數據庫的唯一方法是從FileInputStream中讀取數據,但這會涉及無意中創建映像文件。那麼如何將ImageIcon中的圖像作爲BinaryStream或Blob返回到數據庫?

+0

請您澄清一下嗎? 你無法使用Java對象「文件」,或者你不想在磁盤上創建另一個文件?當你改變文件名時,你是否改變了文件名?你是說你不能使用文件和FileInputStream來存儲然後讀取文件,或者你不能使用文件來存儲它,但是你需要使用FileInputStream讀回它? 坦白地說,你的問題是什麼? – MirroredFate 2011-06-06 21:35:09

回答

0

在團塊API:

setBinaryStream(long pos)返回OutputStream

「獲取可用於寫入的BLOB值此Blob對象表示的流。」所以你可以直接寫入你的位。

我不太清楚如何從修改後的ImageIcon中獲取像素。如果您可以將其轉換爲BufferedImage,則該類別具有getRGB方法。