Olá, estou desenvolvendo um projeto pro meu TCC e estou criando uma pequena aplicação para gerenciar uma turma em uma escola. Nessa aplicação os alunos são cadastrados com seus dados e uma foto. Eu estava tentando salvar a imagem no banco de dados, mas tá se mostrando um pouco mais complicado do que parecia nas aulas que vi. Decidi então, salvar apenas o caminho da imagem no BD e salvar a imagem em uma pasta específica da aplicação(C:/siade/sistema/arquivos/imagens).
A imagem tá carregada em uma JLabel e quero salvar em formato jpg.
Se você já tem a imagem em um caminho fixo, por que não salva (ou copia) a imagem diretamente desse arquivo, em vez de pegar do JLabel?
Se a gente precisar fazer as coisas manualmente pra que criar aplicações? Para facilitar. Eu não quero que meu usuário tenha que entrar em 4 pastas para salvar uma foto tendo que renomear com o cpf se já o digitou no frame do programa.
Solucao aceita
rcarvalhoalencar
Criando a variável para armazenar a imagem.
BufferedImage imagem;
Definindo a imagem na label:
JFileChooserfc=newJFileChooser();intres=fc.showOpenDialog(null);if(res==JFileChooser.APPROVE_OPTION){Filearquivo=fc.getSelectedFile();try{imagem=ManipularImagem.setImagemDimensao(arquivo.getAbsolutePath(),173,139);// 173x139 será o tamanho da imagem na label. Você pode definir qualquer um, mas recomendo já deixar a label no tamanho que fai ficar depois de receber a imagem para já fazer a parte de designer .lblImagem.setText("");lblImagem.setIcon(newImageIcon(imagem));}catch(Exceptionex){// System.out.println(ex.printStackTrace().toString());}}else{JOptionPane.showMessageDialog(null,"Você Não Selecionou Um Arquivo.");}
Salvando a Imagem:
try{Stringcaminho="C://";//caminho onde a imagem será salvaStringnomedaimagem="digiteonomedaimagemaqui";// aqui você define o nome da imagem. Eu salvo nessa variável o CPF do aluno referente a foto, para que depois somente com o cpf o programa possa encontrala e carregar a imagem junto aos outros dados.Fileoutputfile=newFile(caminho+nomedaimagem+".jpg");ImageIO.write(imagem,"jpg",outputfile);}catch(IOExceptionex){Logger.getLogger(tAlunos.class.getName()).log(Level.SEVERE,null,ex);}
TerraSkilll
Acho que você não entendeu o que eu disse. A sugestão não era pra você (ou o usuário) copiar manualmente, mas sim você programar a cópia de um ponto pra outro, já que possui o caminho de onde quer copiar e para onde quer gravar, sem passar por um JLabel (que é o que sua pergunta dava a entender). Foi exatamente o que você na sua solução.
Abraço.
rcarvalhoalencar
Não tem caminho fixo para a origem do arquivo, o usuário pode selecionar qualquer imagem em qualquer lugar com o seletor de arquivos. Eu entendi o que você disse, creio que vc que não compreendeu.
Abraço.