Duvida iniciante: Como encolher uma imagem mantendo a proporcionalidade

Saudacoes,

Como encolher uma imagem png mantendo suas proporcoes via java ?

nessa thread https://stackoverflow.com/questions/244164/how-can-i-resize-an-image-using-java

eu achei esse codigo:

BufferedImage createResizedCopy(Image originalImage, 
            int scaledWidth, int scaledHeight, 
            boolean preserveAlpha)
    {
        System.out.println("resizing...");
        int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
        BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType);
        Graphics2D g = scaledBI.createGraphics();
        if (preserveAlpha) {
            g.setComposite(AlphaComposite.Src);
        }
        g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); 
        g.dispose();
        return scaledBI;
    }

Obrigado pela ajuda mas me parece que esta recalculando a imagem

O que eu preciso é o seguinte: independente do tamanho (largura e altura) da imagem que o usuario postar ela vai aparecer na tela com o tamanhao de 2 cm x 2 cm.

Sim, você precisa recalcular as dimensões da imagem para redimensioná-la.

Para calcular a proporção e não distorcer a imagem ao redimensionar, você divide a altura pela largura:

  • Se o resultado for maior que 1, você deixa a largura em 2 e ajusta a altura da imagem.
  • Se o resultado for menor que 1, você deixa a altura em 2 e ajusta a largura da imagem.
  • Senão significa que a altura é igual a altura então é só redimensionar para 2 x 2;