如何将ImageIcon重新变成斑点?

问题描述

| 我已经将Blob(PNG文件)存储到数据库中,如下所示:
File file = new File( \"image.png\" );
FileInputStream fis = new FileInputStream( file );
statement.setBinaryStream( 1,fis,(int) file.length() );
当前,我使用此过程从数据库获取Blob图像,并将其转换回图像以供使用:
Blob blob = results.getBlob( 1 );
ImageIcon imageIcon = new ImageIcon( blob.getBytes( 1L,(int) blob.length() ) );
但是,我需要一种方法将图像从ImageIcon放回数据库中(在更改后),而不创建文件,将其存储到磁盘中,然后使用FileInputSteam读回。 编辑清晰 好吧,说我已经将该图像作为ImageIcon存储在Label中。我知道如何将其放入数据库的唯一方法是从FileInputStream读取,但这将涉及毫无意义地制作图像文件。那么我将如何从ImageIcon中读取图像作为BinaryStream或Blob的形式读回到数据库?     

解决方法

        我会尝试这样的事情
PixelGrabber pg = new PixelGrabber(imageIcon.getImage(),w,h,true);
pg.grabPixels();
// You may need to wait here until all pixels are copied (see ImageObserver)
Object buffer = pg.getPixels();
参见http://download.oracle.com/javase/1.4.2/docs/api/java/awt/image/PixelGrabber.html 您可能需要适当调整它,并指定正确的w和h。     ,        在Blob API中:
setBinaryStream(long pos)
返回
OutputStream
\“检索可用于写入此Blob对象表示的BLOB值的流。”因此,您可以将位直接写入该流。 我不太确定如何从修改后的ѭ5中获取像素。如果可以将其强制转换为
BufferedImage
,则该类具有
getRGB
方法。