Como salvar imagem no banco de dados??? Para depois mostrar juntos com os dados gravados nele.
Java
37 Respostas
FABIANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA, EU JÁ TE MANDEI O CÓDIGO DISSO MULHER, funcionando melhor do que uma água caindo da cachoeira
olha você pode implementar o botão de salvar imagem e faz uma verificação se a imagem inserida for igual a do banco não salva senão altera a que está no banco de dados ou adiciona uma nova
Mas senão for o que quer pode dar mais detalhes por favor
ok. Primeiro você vai fazer um select na sua tabela e quando obter os dados Pode ser num array ou que você preferir você converte a imagem que no caso está em formato binário para a forma original dela novamente
como que eu faço isso??? Eu nunca fiz isso você pode me ensinar a fazer ???
Este código abaixo deve ajudar, não fui eu que fiz e está na internet e funciona muito bem, só que adaptei ele para o caso:
InputStream leitura = new ByteArrayInputStream(byteImagem);
try {
BufferedImage novaimagem = ImageIO.read(leitura);
lblImagem.setIcon(new ImageIcon(novaimagem));
} catch (IOException ex) {
Logger.getLogger(EnviarImagem.class.getName()).log(Level.SEVERE, null, ex);
}
}
Se não entender me fala
esse byteimagem é os bytes que o banco retorna, através da consulta
assim que é o código:
private void jButtonSalvarImagemActionPerformed(java.awt.event.ActionEvent evt) {
byte[] byteImagem = null;
InputStream leitura = new ByteArrayInputStream(byteImagem);
try {
BufferedImage novaimagem = ImageIO.read(leitura);
jButtonSalvarImagem.setIcon(new ImageIcon(novaimagem));
} catch (IOException ex) {
}
}
mais ele esta dando esse erro:
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at java.io.ByteArrayInputStream.(ByteArrayInputStream.java:106)
at telas.TelaMoradores.jButtonSalvarImagemActionPerformed(TelaMoradores.java:683)
at telas.TelaMoradores.access$800(TelaMoradores.java:26)
at telas.TelaMoradores$9.actionPerformed(TelaMoradores.java:239)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
esse código pra mim não deu , o que faço???
eu estou usando esse código:
pat.setBytes(8, mod.getImagem());
e no banco eu estou utilizando bytea que eu mandei a foto pra você ver
ok
Aqui é o meu projeto ele está no NetBeans
<div class="lightbox-wrapper"><a class="lightbox" href="/uploads/3X/3/9/392bbd834048132eba25536d942f12683e01e600.png.webp" data-download-href="/uploads/default/392bbd834048132eba25536d942f12683e01e600" title="image.png"><img src="/uploads/3X/3/9/392bbd834048132eba25536d942f12683e01e600.png.webp" alt="image" data-base62-sha1="89KVAQQAwLfhft21D3J1zUTbauY" width="690" height="388" srcset="/uploads/3X/3/9/392bbd834048132eba25536d942f12683e01e600.png.webp, /uploads/3X/3/9/392bbd834048132eba25536d942f12683e01e600.png.webp 1.5x, /uploads/3X/3/9/392bbd834048132eba25536d942f12683e01e600.png.webp 2x" data-small-upload="/uploads/3X/3/9/392bbd834048132eba25536d942f12683e01e600.png.webp"><div class="meta">
<svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use xlink:href="#far-image"></use></svg>image.png1920×1080 118 KB<svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use xlink:href="#discourse-expand"></use></svg>
</div></a></div>
aonde esta a seta minha eu não poderia usar porque eu tinha feito o código de adicionar olha:
private void jButtonAdicionarImagemActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser arquivo = new JFileChooser();
arquivo.setDialogTitle(“Selecione uma foto”);
arquivo.setFileSelectionMode(JFileChooser.FILES_ONLY);
int opc = arquivo.showOpenDialog(this);
if(opc == JFileChooser.APPROVE_OPTION){
File file = new File("caminho");
file = arquivo.getSelectedFile();
String filename = file.getAbsolutePath();
jTextFieldPath.setText(filename);
ImageIcon imagem = new ImageIcon(arquivo.getSelectedFile().getPath());
jLabelImagem.setIcon(new ImageIcon(imagem.getImage().getScaledInstance(jLabelImagem.getWidth(), jLabelImagem.getHeight(), Image.SCALE_DEFAULT)));
}
}
eu não poderia só fazer o botão de salvar imagem ???
você poderia explicar de uma outra forma não consegui entender.
Bom a forma que expliquei não específica o arquivo que recebe do gerenciador de arquivo.
O adiconar imagem e o salvar imagem seria a mesma coisa.
Ou só salvaria se fosse no salvar imagem
eu mudei o código para esse:
JFileChooser se = new JFileChooser();
se.setFileSelectionMode(JFileChooser.FILES_ONLY);
int estado = se.showOpenDialog(null);
if(estado == JFileChooser.APPROVE_OPTION){
try {
fis = new FileInputStream (se.getSelectedFile());
this.longitudBytes = (int) se.getSelectedFile().length();
Image icono = ImageIO.read(se.getSelectedFile()).getScaledInstance(jLabelImagem.getWidth(), jLabelImagem.getHeight(), Image.SCALE_DEFAULT);
jLabelImagem.setIcon(new ImageIcon(icono));
jLabelImagem.updateUI();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex){
ex.printStackTrace();
}
}
e eu queria um código que ajudasse a colocar ele dentro do banco de dados.
Para lançar no banco precisa converter em array de bytes .
E eu preciso armazenar a imagem temporariamente para mandar para o banco. O que faço aqui:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(imagem,"JPEG",baos);
byteImagem=baos.toByteArray();
Bom se você quiser também permitir uma função para alterar a imagem você teria que verificar se a imagem é existente no banco
Bom poderia fazer só o botão salvar a imagem sim
eu estou usando esse site de base o que você acha?
https://respostas.guj.com.br/39233-como-salvaralterarler-uma-imagem-no-banco-de-dados
ele é bom ou você acha melhor não
Excelente agora entendi o que você queria fazer.
Sim é ótimo usar sites que quanto mais ajuda tiver melhor é
eu estou utilizando esse código:
private FileInputStream Imagem;
public FileInputStream getImagem() {
return Imagem;
}
public void setImagem(FileInputStream Imagem) {
this.Imagem = Imagem;
}
eu teria que usar o private byte[ ] Imagem; também.
Vou adaptar o meu código para o que você quer.E testar depois te falo
Sim pois o banco só seu só está aceitando os dados em bytes[]
ok fico na espera então…
oi você esqueceu de mim com código que você tinha prometido ontem???
Não é que estou fazendo um programa baseado na imagem que me mostrou
ok então, é que eu achei que você tinha esquecido de mim…
Link atualizado
Pode,mas não é aconselhável pois pesaria muito a tabela e não redimensionaria o banco de dados
Se seu sistema for só pra você faça do jeito que achar melhor
ok
Se conseguiu resolver não esqueça de marcar o tópico como resolvido.Para marcar a solução é só pegar e clicar na checkbox verde é editar o título do tópico colocando [RESOLVIDO] antes do título do tópico
o dao ai é o pacote.Você pode remover isso
ok obrigada




