Redimensionar uma imagem para o formato 3x4

3 respostas
G

sou iniciante na linguagem e gostaria de saber como eu faço para carregar uma imagem para dentro de um jpanel sempre no formato 3x4. ou seja quando for carregar a mesma do hd para o programa ela deve redimensionar para o tamanho 3x4.

desde já agradeço a ajuda de todos.

segue abaixo o código. porem sem o redimensionamento.

private void jButtonAdicionaFotoActionPerformed(java.awt.event.ActionEvent evt) {                                                    
        // Botão Adicionar foto Cadastro aluno
        
         JFileChooser buscaFoto =new JFileChooser();
        int resultado = buscaFoto.showOpenDialog(null);
        
        if (resultado ==JFileChooser.APPROVE_OPTION)
            try
            
            {
                
                
                
                String name =buscaFoto.getSelectedFile().getPath();
                
                jLabelFoto.setIcon(new ImageIcon(name));
                
                 
                
                 
                 jLabelFoto.setText("");
            } catch (Exception e) {
            }                                           
        
}

3 Respostas

D

Algo do tipo:

//criar uma imagem 3 x 4
		BufferedImage image = new BufferedImage(300, 400, BufferedImage.TYPE_INT_RGB);
		
		//ler sua imagem
		ImageIcon sua_imagem = new ImageIcon(name);
		
		//desenhar na nova imagem no tamanho desejado
		image.getGraphics().drawImage(sua_imagem.getImage(), 0, 0, 300, 400, 0, 0, sua_imagem.getIconWidth(), sua_imagem.getIconHeight(), null);
		
		//setar 
		jLabelFoto.setIcon(new ImageIcon(image));
S

Então cara tem um método que eu fiz aqui no software que desenvolvo que faz rescale de imagens, ve se tu flagra.

/**
	 * Redimenciona a figura de acordo com os parametros.
	 * @param img imagem a ser redimensionada.
	 * @param width largura padrão.
	 * @param height altura padrão.
	 * @param hint tipo do algoritimo a ser usado para reduzir a imagem.
	 * @return imagem redimensionada.
	 * @see java.awt.Image.SCALE_DEFAULT
	 * @see java.awt.Image.SCALE_FAST
	 * @see java.awt.Image.SCALE_SMOOTH
	 * @see java.awt.Image.SCALE_REPLICATE
	 * @see java.awt.Image.SCALE_AREA_AVERAGING
	 */
	public static Image applyScale(final ImageIcon img, final int width, final int height, final int hint) {
		final int proportionalWidth;
		final int proportionalHeight;

		final double containerRate = height / (double) width;
		final double imgRate = img.getIconHeight() / (double) img.getIconWidth();
		if (imgRate > containerRate) {
			proportionalWidth = -1;
			proportionalHeight = height;
		} else {
			proportionalWidth = width;
			proportionalHeight = -1;
		}

		return img.getImage().getScaledInstance(proportionalWidth, proportionalHeight, hint);
	}
G

Obrigado dstori sua ajuda foi de grande importância. resolveu o meu problema!!

Criado 12 de agosto de 2008
Ultima resposta 10 de set. de 2008
Respostas 3
Participantes 3