Oi pessoal.
Estou tendo dificuldade em um projeto e gostaria de saber se tem alguma solução pro meu problema.
Estou desenvolvendo um software que captura a imagem (JPG) de uma camera, joga em um panel e depois permite edição da mesma.
Porém, quando o usuário opta por diminuir o tamanho da foto, a imagem perde qualidade, fica com contornos serrilhados.
Essa imagem vai ser impressa, precisa ser de boa qualidade.
Já pesquisei algumas formas de redimensionar, mas ainda não encontrei uma solução.
Tem alguma forma de diminuir a foto sem perder a qualidade?
O código de redimensionar que estou usando é o seguinte:
[code] public void redimensionarImg() {
imagem = jPanel3.getImage(); //Guarda na variavel imagem o foto q esta no panel
int width = Integer.parseInt(jTAlt.getText());//o usuario informa a altura para redimensionar
int height = Integer.parseInt(jTLarg.getText());//o usuario informa a largura para redimensionar
if (jCBProporcional.isSelected()) {//se estiver selecionado, a imagem é reduzida proporcionalmente
double thumbRatio = (double) width / (double) height;
int imageWidth = imagem.getWidth();
int imageHeight = imagem.getHeight();
double imageRatio = (double) imageWidth / (double) imageHeight;
if (thumbRatio < imageRatio) {
height = (int) (width / imageRatio);
} else {
width = (int) (height * imageRatio);
}
}
BufferedImage smaller = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//cria a variavel BufferedImage a ser devolvida pro panel
Graphics2D g2d = smaller.createGraphics();
g2d.drawImage(imagem, 0, 0, width, height, null);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.dispose();
jPanel3.setImage(smaller, 0, 0);//aplica a imagem reduzida no panel
}[/code]
Alguém sabe como resolver meu problema?
Obrigado.