Redimensionar imagem

opa… fiz um method pra redimensionar imagens proporcionalmente e derepente pd ser util pra alguém…
um abraço a todos…

    /**
	 * Faz redimensionamento da imagem conforme os parâmetros imgLargura e imgAltura mantendo a proporcionalidade.
	 * Caso a imagem seja menor do que os parâmetros de redimensionamento, a imagem não será redimensionada.
     * 
	 * @param caminhoImg caminho e nome da imagem a ser redimensionada.
	 * @param imgLargura nova largura da imagem após ter sido redimensionada.
	 * @param imgAltura  nova altura da imagem após ter sido redimensionada.
	 * 
	 * @return Não há retorno
	 * @throws Exception Erro ao redimensionar imagem
     ************************************************************************************************************/
	public static void setImagemDimensao (String caminhoImg, Integer imgLargura, Integer imgAltura) throws Exception
	{
		Double novaImgLargura = null;
		Double novaImgAltura = null;
		Double imgProporcao = null;
		Graphics2D g2d = null;
		BufferedImage imagem = null, novaImagem = null; 
		
		//--- Obtém a imagem a ser redimensionada ---
		imagem = ImageIO.read(new File(caminhoImg));
		
		//--- Obtém a largura da imagem ---
		novaImgLargura = (double) imagem.getWidth();
		
		//--- Obtám a altura da imagem ---
		novaImgAltura = (double) imagem.getHeight();
		
		//--- Verifica se a altura ou largura da imagem recebida é maior do que os ---
		//--- parâmetros de altura e largura recebidos para o redimensionamento   ---
		if (novaImgLargura >= imgLargura) 
		{
			imgProporcao = (novaImgAltura / novaImgLargura);//calcula a proporção
			novaImgLargura = (double) imgLargura;	
			
			//--- altura deve <= ao parâmetro imgAltura e proporcional a largura ---
			novaImgAltura = (novaImgLargura * imgProporcao);
			
			//--- se altura for maior do que o parâmetro imgAltura, diminui-se a largura de ---
			//--- forma que a altura seja igual ao parâmetro imgAltura e proporcional a largura ---
			while (novaImgAltura > imgAltura)
			{
				novaImgLargura = (double) (--imgLargura);			
				novaImgAltura = (novaImgLargura * imgProporcao);
			}
		}		
		else if (novaImgAltura >= imgAltura)
		{
			imgProporcao = (novaImgLargura / novaImgAltura);//calcula a proporção
			novaImgAltura = (double) imgAltura;
			
			//--- se largura for maior do que o parâmetro imgLargura, diminui-se a altura de ---
			//--- forma que a largura seja igual ao parâmetro imglargura e proporcional a altura ---
			while (novaImgLargura > imgLargura) 
			{
				novaImgAltura = (double) (--imgAltura);			
				novaImgLargura = (novaImgAltura * imgProporcao);
			}
		}
		
		novaImagem = new BufferedImage(novaImgLargura.intValue(), novaImgAltura.intValue(), BufferedImage.TYPE_INT_RGB);
		g2d = novaImagem.createGraphics();
		g2d.drawImage(imagem, 0, 0, novaImgLargura.intValue(), novaImgAltura.intValue(), null);
		ImageIO.write(novaImagem, "JPG", new File(caminhoImg));
		
		return;
	}//setImagemDimensao    

Amigo, adaptei seu código para a imagem redimencionada ter uma melhor resolução:

[code]public static void redimenImagem(String caminhoImg, Integer imgLargura, Integer imgAltura) throws IOException {
BufferedImage imagem = ImageIO.read(new File(caminhoImg));

    Double novaImgLargura = (double) imagem.getWidth();
    Double novaImgAltura = (double) imagem.getHeight();

    Double imgProporcao = null;
    if (novaImgLargura >= imgLargura) {
        imgProporcao = (novaImgAltura / novaImgLargura);
        novaImgLargura = (double) imgLargura;
        novaImgAltura = (novaImgLargura * imgProporcao);
        while (novaImgAltura > imgAltura) {
            novaImgLargura = (double) (--imgLargura);
            novaImgAltura = (novaImgLargura * imgProporcao);
        }
    } else if (novaImgAltura >= imgAltura) {
        imgProporcao = (novaImgLargura / novaImgAltura);
        novaImgAltura = (double) imgAltura;
        while (novaImgLargura > imgLargura) {
            novaImgAltura = (double) (--imgAltura);
            novaImgLargura = (novaImgAltura * imgProporcao);
        }
    }

    BufferedImage novaImagem = new BufferedImage(novaImgLargura.intValue(), novaImgAltura.intValue(), BufferedImage.TYPE_INT_RGB);
    Graphics g = novaImagem.getGraphics();
    g.drawImage(imagem.getScaledInstance(novaImgLargura.intValue(), novaImgAltura.intValue(), 10000), 0, 0, null);
    g.dispose();
    ImageIO.write(novaImagem, "JPG", new File(caminhoImg));
}[/code]

Valeu, abraço.

Muito bom, me ajudou bastante!

Tinha encontrado alguns códigos, mas não com essa função “proporcional”.

Obrigado!