Boa tarde pessoal,
Estou desenvolvendo uma aplicação em que preciso exibir na tela a imagem da pessoa (que busco usando JFileChooser) e de sua impressão didital captada pelo leitor biométrico e armazená-las no banco. Porém, NÃO consegui nem exibila na tela ainda, então, será que poderiam me ajudar??
Dei uma olhada no Post indicado por ViniGodoy ([url]http://intelectolivre.blogspot.com/2008/07/exibindo-gravando-e-recuperando-imagens.html[/url]) mas não consegui fazer funcionar, se vc, Vini, ou qualquer outro puder me ajudar ficarei muito agradecido, pois é para o meu TCC.
Para a exibição da Imagem tenho a seguinte classe:import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.TexturePaint;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class ImagePanel extends JPanel {
private BufferedImage image = null;
// Abaixo você define como a imagem será pintada no JPanel...
// Nesse caso, o padrão é o redimensionamento da imagem calculando
// o ASPECT RATIO da mesma e centralizando-a no JPanel...
private FillType fillType = FillType.RESIZE;
//private FillType fillType = FillType.ASPECT_RATIO_CENTER;
public ImagePanel() {
}
public ImagePanel(BufferedImage img) {
setImage(img);
}
public ImagePanel(File imgSrc) throws IOException {
this(ImageIO.read(imgSrc));
}
public ImagePanel(String fileName) throws IOException {
this(new File(fileName));
}
public final void setImage(BufferedImage img) {
if (img == null) JOptionPane.showMessageDialog(null,"Sem imagem para processar!");
this.image = img;
invalidate();
}
public void setImage(File img) throws IOException {
setImage(ImageIO.read(img));
}
public void setImage(String fileName) throws IOException {
setImage(new File(fileName));
}
public BufferedImage getImage() {
return image;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
fillType.drawImage(this, g2d, image);
g2d.dispose();
}
public FillType getFillType() {
return fillType;
}
public void setFillType(FillType fillType) {
if (fillType == null) JOptionPane.showMessageDialog(null,"Saída inválida!");
this.fillType = fillType;
invalidate();
}
public static enum FillType {
// redimensiona a imagem para a dimensão do JPanel...
RESIZE {
public void drawImage(JPanel panel, Graphics2D g2d, BufferedImage image) {
g2d.drawImage(image, 0, 0, panel.getWidth(), panel.getHeight(), null);
}
},
// mantém o tamanho natural da imagem e a centraliza no JPanel...
CENTER {
public void drawImage(JPanel panel, Graphics2D g2d, BufferedImage image) {
int left = (panel.getHeight() - image.getHeight()) / 2;
int top = (panel.getWidth() - image.getWidth()) / 2;
g2d.drawImage(image, top, left, null);
}
},
// caso a imagem seja menor que o JPanel, a coloca lado a lado...
SIDE_BY_SIDE {
public void drawImage(JPanel panel, Graphics2D g2d, BufferedImage image) {
Paint p = new TexturePaint(
image, new Rectangle2D.Float(0, 0, image.getWidth(), image.getHeight()));
g2d.setPaint(p);
g2d.fillRect(0, 0, panel.getWidth(), panel.getHeight());
}
},
// calcula o aspect ratio da imagem e a pinta no JPanel no eixo (0,0)...
ASPECT_RATIO {
public void drawImage(JPanel panel, Graphics2D g2d, BufferedImage image) {
int larguraImg = image.getWidth();
int alturaImg = image.getHeight();
int largura = 0, altura = 0;
double aspectoImg =
(double) larguraImg / (double) alturaImg;
double aspectoPanel =
(double) panel.getWidth() / (double) panel.getHeight();
if (larguraImg > panel.getWidth() || alturaImg > panel.getHeight()) {
if (aspectoImg == aspectoPanel) {
largura = panel.getWidth();
altura = panel.getHeight();
}
if (aspectoImg > aspectoPanel) {
largura = panel.getWidth();
altura = (largura * alturaImg) / larguraImg;
}
if (aspectoImg != aspectoPanel) {
altura = panel.getHeight();
largura = (altura * larguraImg) / alturaImg;
}
} else {
largura = image.getWidth();
altura = image.getHeight();
}
g2d.drawImage(image, 0, 0, largura, altura, null);
}
},
// calcula o aspect ratio da imagem e a pinta no JPanel, centralizando-a...
ASPECT_RATIO_CENTER {
public void drawImage(JPanel panel, Graphics2D g2d, BufferedImage image) {
int larguraImg = image.getWidth();
int alturaImg = image.getHeight();
int largura = 0, altura = 0;
double aspectoImg = (double) larguraImg / (double) alturaImg;
double aspectoPanel = (double) panel.getWidth() / (double) panel.getHeight();
if (larguraImg > panel.getWidth() || alturaImg > panel.getHeight()) {
if (aspectoImg == aspectoPanel) {
largura = panel.getWidth();
altura = panel.getHeight();
}
if (aspectoImg > aspectoPanel) {
largura = panel.getWidth();
altura = (largura * alturaImg) / larguraImg;
}
if (aspectoImg != aspectoPanel) {
altura = panel.getHeight();
largura = (altura * larguraImg) / alturaImg;
}
} else {
largura = image.getWidth();
altura = image.getHeight();
}
int left = (panel.getHeight() - altura) / 2;
int top = (panel.getWidth() - largura) / 2;
g2d.drawImage(image, top, left, largura, altura, null);
}
};
public abstract void drawImage(JPanel panel, Graphics2D g2d, BufferedImage image);
}
}
private ImageFileChooser imagePrev = null;
private JFileChooser fc = new JFileChooser();
private ImagePanel quadroImagem = null;
private BufferedImage img;
private void jbCapturar1ActionPerformed(java.awt.event.ActionEvent evt) {
if (imagePrev == null)
imagePrev = new ImageFileChooser(fc);
// adiciona a nova funcionalidade de preview...
fc.setAccessory(imagePrev);
if (fc.showOpenDialog(this) == JFileChooser.CANCEL_OPTION)
return;
try{
// cria um objeto do tipo BufferedImage do arquivo selecionado...
img = ImageIO.read(new File(fc.getSelectedFile().getAbsolutePath()));
// inicia o processo para reescrever o método paintComponent do JPanel...
if (quadroImagem == null)
quadroImagem = new ImagePanel(img);
quadroImagem.setImage(img);
painelImagem.add(quadroImagem); // painelImagem é do tipo JPanel
painelImagem.repaint();
painelImagem.validate();
} catch (IOException e) {
javax.swing.JOptionPane.showMessageDialog(this, "Não foi possível ler a imagem!");
}
}
Poderiam me ajudar??? Uso NetBeans 6.9.1
Obrigado!!