Você está na página 1de 4

Galera, Proucurei de ponta a cabea o GUJ e outros sites achei alguns forns dados como resolvido porm quando

partir para implementao o resultado no era o esperado... Tenha uma classe de exemplo que fiz para tentar ilustrar meu problema para vocs. 1- SuporteJDBC // Classe que acessa o banco [Postgres] Abaixo meu cdigo: **Ele tericamente inseri, porm queria receber o arquivo do banco e estou tendo problemas, recebo como byte[] mas no sei o que fazer com ele para exibir em um JFrame, gostaria de saber se tem como dar um Parser para File, aceito sugestes:
view plaincopy to clipboardprint?

1.
2.

package ImagemII; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement;

3. 4. 5. 6. 7. 8.
9. 11. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.

10. import javax.swing.JFileChooser; 12. class InsereImagem {


public static void main(String args[]) throws Exception { SalvarImagem(); ExibiImagem(); }

public static byte[] ExibiImagem() { ResultSet rs = null; try { Statement stm = SuporteJDBC.Conexao().createStatement(); rs = stm.executeQuery("SELECT fotorosto FROM cfuncionario WHERE id = 200"); while (rs.next()) { System.out.print(rs.getBytes("fotorosto").length); return rs.getBytes("fotorosto"); } } catch (Exception e) { e.printStackTrace(); } return null; } public static void SalvarImagem() { JFileChooser fc = new JFileChooser(); File img = null; int res = fc.showOpenDialog( null); if (res == JFileChooser.APPROVE_OPTION) { img = fc.getSelectedFile(); } byte[] imagem = new byte[(int) img.length()]; System.out.println("Lendo " + img.length() + " bytes..."); try{ DataInputStream is = new DataInputStream(new FileInputStream(img)); is.readFully(imagem); is.close(); PreparedStatement stmt = SuporteJDBC.Conexao()

48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. } 60. } SOLUO:

.prepareStatement( "INSERT INTO cfuncionario (id, nome, fotorosto) " + "values (200, ?, ?)"); stmt.setString(1, img.getName()); stmt.setObject(2, imagem); stmt.executeUpdate(); }catch (Exception e) { e.printStackTrace(); } System.out .println("Imagem " + img.getName() + " acrescentada ao banco");

view plaincopy to clipboardprint?

1.

public static boolean salvarFuncionarioFotoCorpo(String imagem) { 2. String insertRow = "UPDATE cfuncionario SET fotocorpo=? WHERE id = " 3. + getId() + ";"; 4. try { 5. PreparedStatement pstmt = SuporteJDBC.Conexao().prepareStatement( 6. insertRow); 7. File imagemFile = new File(imagem); 8. byte[] imagemArray = new byte[(int) imagemFile.length()]; 9. DataInputStream imagemStream = new DataInputStream( 10. new FileInputStream(imagemFile)); 11. imagemStream.readFully(imagemArray); 12. imagemStream.close(); 13. pstmt.setBytes(1, imagemArray); 14. pstmt.executeUpdate(); 15. } catch (Exception e) { 16. e.printStackTrace(); 17. } 18. return true; 19. } 20. 21. public static Image capturaImagemRosto() { 22. byte[] imageByte = null; 23. Image image = null; 24. String sql = "SELECT fotorosto FROM cfuncionario WHERE id = " + getId(); 25. try { 26. Statement stm = SuporteJDBC.Conexao().createStatement(); 27. ResultSet rset = stm.executeQuery(sql); 28. 29. while (rset.next()) { 30. imageByte = rset.getBytes("fotorosto"); 31. ImageIcon icon = new ImageIcon(imageByte); 32. return icon.getImage(); 33. } 34. } catch (Exception e) { 35. e.printStackTrace(); 36. } 37. return image; 38. } 39. 40. public void SalvarImagem(String nome, int tipo) { 41. setModal(true); 42. JFileChooser fc; 43. UIManager.put("FileChooser.lookInLabelMnemonic", "E"); 44. UIManager.put("FileChooser.lookInLabelText", "Examinar em"); 45. 46. UIManager.put("FileChooser.saveInLabelMnemonic", "S"); 47. UIManager.put("FileChooser.saveInLabelText", "Salvar em"); 48.

49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114.

UIManager.put("FileChooser.upFolderToolTipText", "Um nvel acima"); UIManager.put("FileChooser.upFolderAccessibleName", "Um nvel acima"); UIManager.put("FileChooser.homeFolderToolTipText", "Desktop"); UIManager.put("FileChooser.homeFolderAccessibleName", "Desktop"); UIManager.put("FileChooser.newFolderToolTipText", "Criar nova pasta"); UIManager.put("FileChooser.newFolderAccessibleName", "Criar nova pasta"); UIManager.put("FileChooser.listViewButtonToolTipText", "Lista"); UIManager.put("FileChooser.listViewButtonAccessibleName", "Lista"); UIManager.put("FileChooser.detailsViewButtonToolTipText", "Detalhes"); UIManager.put("FileChooser.detailsViewButtonAccessibleName", "Detalhes"); UIManager.put("FileChooser.fileNameLabelMnemonic", "N"); UIManager.put("FileChooser.fileNameLabelText", "Nome do arquivo"); UIManager.put("FileChooser.filesOfTypeLabelMnemonic", "A"); UIManager.put("FileChooser.filesOfTypeLabelText", "Arquivos do tipo"); UIManager.put("FileChooser.fileNameHeaderText", "Nome"); UIManager.put("FileChooser.fileSizeHeaderText", "Tamanho"); UIManager.put("FileChooser.fileTypeHeaderText", "Tipo"); UIManager.put("FileChooser.fileDateHeaderText", "Data"); UIManager.put("FileChooser.fileAttrHeaderText", "Atributos"); UIManager.put("FileChooser.cancelButtonText", "Cancelar"); UIManager.put("FileChooser.cancelButtonMnemonic", "C"); UIManager.put("FileChooser.cancelButtonToolTipText", "Cancelar"); UIManager.put("FileChooser.openButtonText", "Abrir / Salvar"); UIManager.put("FileChooser.openButtonMnemonic", "A"); UIManager.put("FileChooser.openButtonToolTipText", "Abrir"); UIManager.put("FileChooser.saveButtonText", "Salvar =]"); UIManager.put("FileChooser.saveButtonToolTipText", "S"); UIManager.put("FileChooser.saveButtonToolTipText", "Salvar"); UIManager.put("FileChooser.updateButtonText", "Alterar"); UIManager.put("FileChooser.updateButtonToolTipText", "A"); UIManager.put("FileChooser.updateButtonToolTipText", "Alterar"); UIManager.put("FileChooser.helpButtonText", "Ajuda"); UIManager.put("FileChooser.helpButtonToolTipText", "A"); UIManager.put("FileChooser.helpButtonToolTipText", "Ajuda"); UIManager.put("FileChooser.acceptAllFileFilterText", "Todos os arquivos"); fc = new JFileChooser("c:\\"); fc.setFileFilter(new FileNameExtensionFilter("SOMENTE FOTOS JPG", "jpg")); int res = fc.showOpenDialog( null); if (res == JFileChooser.APPROVE_OPTION) { File arquivo = fc.getSelectedFile(); try { BufferedReader in = new BufferedReader(new FileReader(arquivo)); minhaImagem = arquivo.getAbsolutePath(); in.close(); if (tipo == 1) { Funcionario.salvarFuncionarioFotoRosto(minhaImagem); JOptionPane.showMessageDialog(null, "Foto do Rosto Salva com Sucesso!.", "SCF - Newtec", JOptionPane.INFORMATION_MESSAGE); } else { Funcionario.salvarFuncionarioFotoCorpo(minhaImagem);

115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140.

JOptionPane.showMessageDialog(null, "Foto do Corpo Salva com Sucesso!.", "SCF - Newtec", JOptionPane.INFORMATION_MESSAGE); } Toolkit toolkit = Toolkit.getDefaultToolkit(); imagem = toolkit.getImage(minhaImagem); MediaTracker mediaTracker = new MediaTracker(this); mediaTracker.addImage(imagem, 0); try { mediaTracker.waitForID(0); } catch (InterruptedException ie) { System.err.println(ie); System.exit(1); } setSize(imagem.getWidth(null), imagem.getHeight(null)); setTitle("Foto: " + nome); setVisible(true); } catch (IOException ioe) { ioe.printStackTrace(); } } } public void ExibirImagem(String nome, int tipo) { setModal(true); if (tipo == 1) { imagem = Funcionario.capturaImagemRosto(); } else { imagem = Funcionario.capturaImagemCorpo(); } MediaTracker mediaTracker = new MediaTracker(this); mediaTracker.addImage(imagem, 0); try { mediaTracker.waitForID(0); } catch (InterruptedException ie) { System.err.println(ie); System.exit(1); } setSize(imagem.getWidth(null), imagem.getHeight(null)); setTitle("Foto: " + nome); setVisible(true); }

141.
142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161.

T ai galera, pra quem precisar, completinho do JFileChooser at a exibio em um JFrame. A tela onde exibi extende de um JDialog, ou JFrame, como queiro... O Campo no postgres bytea. Espero que ajude!! Abraos!