2011-06-06 38 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方法。