Carregar imagem do banco de dados

Pessoal estou tentando recuperar uma imagem do meu banco de dados mysql, o código que ue tenho ate da certo, porém ele carrega a imagem e demora muito pra aparecer… tá mto estranho alguem sabe o que pdoe ser?

meu código [code]ByteArrayOutputStream output = new ByteArrayOutputStream();

                    byte[] rb = new byte[1024];
                    int ch = 0;
                    
                          while ((ch = input.read(rb)) != -1)
                          {	
                               output.write(rb, 0, ch);
                          }

                    byte[] b = output.toByteArray();
                            input.close();
                            output.close();

                   Image img = Toolkit.getDefaultToolkit().createImage(b);
               if(img != null)
               {  
                    txticon.setImage(img);
               }    [/code]

rafael, no seu banco de dados, o campo referente ao arquivo é Blob?
tente assim:

InputStream is = null; if (rs.next()) { Blob blob = rs.getBlob("nomeArquivo"); is = blob.getBinaryStream(); }

Eu fiz assim agora mas continua com o mesmo problema =/

ele carrega a imagem, mas ela não aparece dai quando minimizo a tela e maximimzo denovo a imagem ta carregada…
mto estranho mesmo

Isso parece erro de programação então.

Coloca o código da tela que mostra a imagem.

ta ai todo o código que faz a imagem aparecer.

[code]if(rs.next())
{
Blob blob = rs.getBlob(“logotipo”);
InputStream input = blob.getBinaryStream();
// InputStream input = rs.getBinaryStream(“logotipo”);

                if(input != null)
                {
                    
                    ByteArrayOutputStream output = new ByteArrayOutputStream();

                    byte[] rb = new byte[1024];
                    int ch = 0;
                    
                          while ((ch = input.read(rb)) != -1)
                          {	
                               output.write(rb, 0, ch);
                          }

                    byte[] b = output.toByteArray();
                            input.close();
                            output.close();

                   Image img = Toolkit.getDefaultToolkit().createImage(b);
               if(img != null)
               {  
                    txticon.setImage(img);
               }    [/code]

na verdade, esse código que postei acima é referente apenas à recuperação do arquivo no banco de dados.
provavelmente, sua app está com algum problema na hora de carregar a imagem e renderizar a view.

Depois de coloca-lo no txticon voce tem que repintar o componente

                   if(img != null)   
                   {     
                        txticon.setImage(img);   
                        txticon.repaint();
                   }

ainda não deu =/

Então depois de colocar a imagem da o repaint na Janela principal

Fiz assim e funcionou \o/

if(rs.next())
                    {
                         Blob blob = rs.getBlob("logotipo");  
                         InputStream input = blob.getBinaryStream();  
                       // InputStream input  = rs.getBinaryStream("logotipo");  
                    
                    if(input != null)
                    {
                        
                        ByteArrayOutputStream output = new ByteArrayOutputStream();

                         byte[] rb = new byte[input.available()];
                         input.read(rb);       
                         ImageIcon i = new ImageIcon(rb);  
                         Image img = i.getImage(); 
                        
                       
                   if(img != null)
                   {  
                        txticon.setImage(img);
                        txticon.repaint(); 
                   }