Pessoal, eu peguei esse programinha para salvar uma imagem no banco HSQLDB…
Eu to fazendo um cadastro de Usuarios só que tem um problema…
Mais nem sempre a imagem é do tamanho do Jpanel dai ela fica maior e nao aparece por completa, ou as vezes ela fica menor…
Existe algum jeito de redimensiona-la…
Na verdade existir existe, mais eu nao faço ideia… Tem como algum me ajudar???
Estou enviando o codigo, se alguem quiser mexer ou dar alguma dica eu agradeço muiiitooo…
Forte abraço e fica com Deus!!!
Codigo abaixo…
package swing;
import db.ConexaoDB;
import java.awt.Image;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
public class frmImagem extends javax.swing.JFrame {
private File arquivo = null;
private static Connection conexao = null;
private static String sql = null;
public frmImagem() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
pPainel = new javax.swing.JPanel();
lblImagem = new javax.swing.JLabel();
btnAbrir = new javax.swing.JButton();
btnSalvar = new javax.swing.JButton();
btnBuscar = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
pPainel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
lblImagem.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout pPainelLayout = new javax.swing.GroupLayout(pPainel);
pPainel.setLayout(pPainelLayout);
pPainelLayout.setHorizontalGroup(
pPainelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pPainelLayout.createSequentialGroup()
.addGap(118, 118, 118)
.addComponent(lblImagem, javax.swing.GroupLayout.PREFERRED_SIZE, 384, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(78, Short.MAX_VALUE))
);
pPainelLayout.setVerticalGroup(
pPainelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pPainelLayout.createSequentialGroup()
.addGap(79, 79, 79)
.addComponent(lblImagem, javax.swing.GroupLayout.PREFERRED_SIZE, 206, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(75, Short.MAX_VALUE))
);
btnAbrir.setFont(new java.awt.Font("Verdana", 0, 10));
btnAbrir.setText("Abrir");
btnAbrir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAbrirActionPerformed(evt);
}
});
btnSalvar.setFont(new java.awt.Font("Verdana", 0, 10));
btnSalvar.setText("Salvar");
btnSalvar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSalvarActionPerformed(evt);
}
});
btnBuscar.setFont(new java.awt.Font("Verdana", 0, 10));
btnBuscar.setText("Buscar");
btnBuscar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBuscarActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(201, 201, 201)
.addComponent(btnAbrir)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnSalvar)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnBuscar))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(pPainel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(pPainel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnAbrir)
.addComponent(btnSalvar)
.addComponent(btnBuscar))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void btnAbrirActionPerformed(java.awt.event.ActionEvent evt) {
try {
JFileChooser jFileChooser = new JFileChooser();
jFileChooser.showOpenDialog(this);
arquivo = jFileChooser.getSelectedFile();
if (arquivo != null) {
String caminho = arquivo.getAbsolutePath();
Image i = ImageIO.read(new File(caminho));
ImageIcon imagem = new ImageIcon(i);
lblImagem.setIcon(imagem);
this.repaint();
}
} catch (IOException ex) {
Logger.getLogger(frmImagem.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {
if (arquivo != null) {
PreparedStatement stmt = null;
try {
byte[] imageDataByteArray = new byte[(int) arquivo.length()];
InputStream is = new FileInputStream(arquivo);
is.read(imageDataByteArray);
is.close();
conexao = ConexaoDB.getInstance().getConnection();
sql = "INSERT INTO imagens(codigo, imagem) VALUES (?, ?)";
stmt = conexao.prepareStatement(sql);
stmt.setInt(1, 9);
stmt.setBytes(2, imageDataByteArray);
stmt.execute();
} catch (SQLException ex) {
System.err.println("Erro sw: " + ex.getMessage());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
stmt.close();
conexao.close();
ConexaoDB.closeConnection();
} catch (SQLException ex) {
System.err.println("Erro sw1: " + ex.getMessage());
}
}
}
}
private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {
try{
conexao = ConexaoDB.getInstance().getConnection();
sql = "SELECT codigo, imagem FROM imagens WHERE codigo = ?";
PreparedStatement stmt = conexao.prepareStatement(sql);
stmt.setInt(1, 3);
ResultSet rs = stmt.executeQuery();
if (rs.next()){
byte[] imageDataByteArray = rs.getBytes("imagem");
ImageIcon imagem = new ImageIcon(imageDataByteArray);
lblImagem.setIcon(imagem);
this.repaint();
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frmImagem().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnAbrir;
private javax.swing.JButton btnBuscar;
private javax.swing.JButton btnSalvar;
private javax.swing.JLabel lblImagem;
private javax.swing.JPanel pPainel;
// End of variables declaration
}