Problema com o caminho da imagem salvo no postgre.[RESOLVIDO]

2 respostas
Carlos.java
Ola amigos to com um problema criei um cadastro de funcionarios e nele tem um jlabel que recebe a imagem do funcionario até ai tudo bem este é o código que estou usando.
public void localiza_foto() 
{
        
    JFileChooser jfilechooser = new JFileChooser("C:\\Users\\Cyp\\Pictures");
    File file = new File("");
    
    int option = jfilechooser.showOpenDialog(null);
        if(option == JFileChooser.APPROVE_OPTION) 
        {   
            file = jfilechooser.getSelectedFile();
            ImageIcon image = new ImageIcon(file.getPath());   
            labelImage.setIcon(image);
        }
}
Para inserir no banco estou fazendo assim que por sinal esta funcionado
String sqlinsert = "Insert into imagens(id_imagem,imagem) values (" + jtcodigo.getText() + ",'" + imgcaminho + "')";

obj_conexao.statement.executeUpdate(sqlinsert);
Esta inserindo legal no banco mas o problema é que deveria inserir o caminho da imagem assim

C:\Users\Cyp\Pictures\eu.jpg

mas esta inserirndo assim

C:UsersCypPictureseu.jpg

Então gostaria que alguem me ajudasse com esse problema.

Obs: Estou usando postgre o campo q recebera a imagem esta como bytea.

Pessoal agradeço ajuda d todos obrigado.

2 Respostas

Carlos.java

Ola companheiros do GUJ resolvi o problema que estava acontecendo vou deixar aqui o código para alguem q precise ok.

Este código busca a imagem no diretorio e coloca ela num JLabel e trata as barras invertidas para salvar seu caminho no banco.
public void procura_foto() 
{
    
    JFileChooser chooser = new JFileChooser("C:\\Users\\Cyp\\Pictures");
    
    
    int option = chooser.showOpenDialog(null);
       
        if(option == JFileChooser.APPROVE_OPTION) 
        {   
            File file = chooser.getSelectedFile();
            caminhos = chooser.getSelectedFile().getAbsolutePath();
            ImageIcon image = new ImageIcon(file.getPath());
            String caminho = file.getPath();
            labelImage.setIcon(image);
            lbcaminho.setText(caminho);
            imgcaminho = lbcaminho.getText();
            imgcaminho=imgcaminho.replace("\\","/");
        } 

}
Este outro salva no banco.
public void salvar()
{
          try{
                String sqlinsert = "Insert into imagens(id_imagem,imagem) values (" + jtcodigo.getText() + ",'" + imgcaminho + "')";
                    
                    obj_conexao.statement.executeUpdate(sqlinsert);
                    JOptionPane.showMessageDialog(null, "Imagem Salva com Sucesso");
                    }
             catch (SQLException erro) 
             {
                JOptionPane.showMessageDialog(null, "Não foi possivel Slavar Imagem = " + erro);
           
             }
        }

E por ultimo este que busca no banco e exibe a imagem no JLabel.

public void mostrar_imagem()
{
       
          try {
                File file = new File(obj_conexao.resulteset.getString("imagem"));
                
                    ImageIcon image = new ImageIcon(file.getPath());
                    labelImage.setIcon(image);
                
        } catch (SQLException erro) {
                JOptionPane.showMessageDialog(null, "Não foi possivel localizar Imagem = " + erro);
            }
        
}

Espero que esta contribuição minha possa ajudar alguem que precise blz t+ pessoal

OBS: Feliz ano novo a todos muita paz, saude e felicidades.

leandrovrb

Para quem quer redimensionar a imagem deixo o código abaixo:

Busca Através da caixa de diálogo e define um local padrao
try
    {
            JFileChooser busca_foto = new JFileChooser();//instancia a variavel para trabalhar com arquivos
            busca_foto.setCurrentDirectory(new File("C:/ALSISTEMAS/IMAGEM/FOTOS/")); //define o local padrao de arquivos a serem pesquisados
            busca_foto.setDialogTitle("Carregar imagem da Pessoa");//titulo da caixa diálogo
            busca_foto.setFileSelectionMode(JFileChooser.FILES_ONLY);  //Define que serão abertos arquivos.

            if (busca_foto.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)//abre caixa de diágolo com arquivos
        {
                        File arquivo = busca_foto.getSelectedFile();//seleciona o arquivo
                        String foto = ""+busca_foto.getSelectedFile().getName();//armazena caminho na variavel
			BufferedImage bi = ImageIO.read(arquivo);//carrega a imagem real num buffer
			BufferedImage aux = new BufferedImage(800, 600, bi.getType());//cria um buffer auxiliar com o tamanho desejado
			Graphics2D g = aux.createGraphics();//pega a classe graphics do aux para edicao
			AffineTransform at = AffineTransform.getScaleInstance((double) 200 / bi.getWidth(), (double) 140 / bi.getHeight());//cria a transformacao
			g.drawRenderedImage(bi, at);//pinta e transforma a imagem real no auxiliar
			lblFoto.setIcon(new ImageIcon(aux));//seta no jlabel
                        tfFoto.setText("C:/ALSISTEMAS/IMAGEM/FOTOS/"+foto);
        }
    }
    catch(Exception erro)
    {
        JOptionPane.showMessageDialog(null,"Nao foi possível carregar a foto."+erro);
    }

    }

Exibe buscando do banco de dados

try
             {      File arquivo = new File(pessoas.get(tb.getSelectedRow()).getFoto());//busca no bd
                    BufferedImage bi = ImageIO.read(arquivo);//carrega a imagem real num buffer
                    BufferedImage aux = new BufferedImage(800, 600, bi.getType());//cria um buffer auxiliar com o tamanho desejado
                    Graphics2D g = aux.createGraphics();//pega a classe graphics do aux para edicao
                    AffineTransform at = AffineTransform.getScaleInstance((double) 200 / bi.getWidth(), (double) 140 / bi.getHeight());//cria a transformacao
                    g.drawRenderedImage(bi, at);//pinta e transforma a imagem real no auxiliar
                    lblFoto.setIcon(new ImageIcon(aux));//seta no jlabel
            }
            catch(Exception erro)
            {
                    lblFoto.setIcon(null);
            }
Criado 29 de dezembro de 2008
Ultima resposta 2 de ago. de 2011
Respostas 2
Participantes 2