Redimensionar imagem com qualidade

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.

Olá!

Tente mudar a sua constante para usar outro algoritmo de resize. Por exemplo: VALUE_INTERPOLATION_BICUBIC

http://java.sun.com/javase/6/docs/api/index.html?java/awt/RenderingHints.html
http://java.sun.com/javase/6/docs/api/java/awt/RenderingHints.html#KEY_INTERPOLATION

Até mais.

Se o usuário editar a imagem diminuída, então você fatalmente terá problemas ao imprimi-la. Não é possível fazer milagres.

Veja como os pacotes que fazem o que você quer (como o Photoshop) lidam com esse problema.
Normalmente você tem uma coleção de filtros e outras coisas que são aplicados sobre uma região da imagem original (e só diminuídos para visualização); quando você precisa fazer edição pixel a pixel (como é o caso daquelas famosas modelos que você acha que têm a pele perfeita e não têm celulites ou outras imperfeições…), você trabalha diretamente sobre os pixels da imagem original, não sobre a imagem diminuída.

Oi…
Td bem, eu entendo que perca qualidade se eu editar uma imagem reduzida, mas se desconsiderar isso, como eu faço pra imagem ficar melhor mas sem os contornos serrilhados?
O meu software gera crachás, e uma imagem de qualidade é fundamental.
Qdo imprimo um crachá, a foto fica péssima.
Tem solução se for focado soh em diminuir o tamanho?
Obrigado.

Bom dia, Desculpa Reviver esse assunto, mas você conseguiu resolver o seu problema ao perder qualidade da imagem quando diminui a imagem da webCan?

Esse site me ajudou bastante, da uma olhada pode ser o q vc precisa http://cassiosousa.wordpress.com/2012/01/10/redimensionar-imagem-com-java-e-obter-o-array-de-bytes/