Carregar imagem do banco de dados

9 respostas
R

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
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);
                   }

9 Respostas

finotti

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(); }

R

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

Marky.Vasconcelos

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

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

R

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

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);
                   }
finotti

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.

Marky.Vasconcelos

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

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

ainda não deu =/

Marky.Vasconcelos

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

R

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(); 
                   }
Criado 10 de outubro de 2008
Ultima resposta 10 de out. de 2008
Respostas 9
Participantes 3