Redimensionar imagem e gravar em disco!

1 resposta
andre_bento

Olá amigos!
Estou precisando de mais um help em um detalhe do meu sistema aqui pessoal...
Bem, é o seguinte, tenho um campo de cadastro de fotos de membros, nesse campo, o cara escolhe através de um file chooser a imagem e tudo beleza, está tudo funcionando 100%... eu recebo a imagem e faço o redimensionamento dela para um tamanho estipulado... até ae tudo perfeito...
O código é esse:

//redimensiona a imagem e seta minha jLabel
 public void setFoto(String way,File file){
         try{
            
             BufferedImage bi = ImageIO.read(file);  
             BufferedImage aux= new BufferedImage(200, 250, bi.getType());  
             Graphics2D g = aux.createGraphics();  
             AffineTransform at= AffineTransform.getScaleInstance((double)200/bi.getWidth(),(double)250/bi.getHeight());  
             g.drawRenderedImage(bi, at); 
             
            
             lblFoto.setIcon(new ImageIcon(aux));
           
         }
         catch(Exception e){
             JOptionPane.showMessageDialog(null,"ERRO: "+e);
         }
     }
Evento do botão:
if(comando.equals("btnProcurarFoto")){
                JFileChooser fileChooser = new JFileChooser();
                 FileNameExtensionFilter filter = new FileNameExtensionFilter("Arquivos de Imagem", "jpg", "jpeg", "gif", "png");  
               
                 fileChooser.setFileFilter(filter);
                fileChooser.setAcceptAllFileFilterUsed(false);
                int retorno = fileChooser.showOpenDialog(null);
                if(retorno== JFileChooser.APPROVE_OPTION)
                {
                     photoWay = fileChooser.getSelectedFile().getAbsolutePath();
                     photoName = fileChooser.getSelectedFile().getName();
                     File file = new File(photoWay);
                     tela.setFoto(photoWay,file);
                }
                
            }

Ae vem a grande questão...
Eu quero pegar essa foto que foi redimensionada automaticamente pelo sistema e gravar em disco...
Eu tenho um método que grava em disco mas grava a imagem que o usuário forneceu pelo file chooser, ou seja, em qualquer tamanho...
Eu não quero gravar essa imagem, quero gravar a que eu tratei no sistema e redimensionei...
Mas não sei como faço para pegar essa imagem e gravar em disco, pois se fosse pra pegar partindo de um arquivo seria tranquilo... mas nesse caso não sei o que fazer...
Alguém tem alguma idéia?
Desde já obrigado pela força pessoal!
Se precisarem de mais alguma parte do código me falem aqui.

Abraços a todos...Feliz 2012...

1 Resposta

ftorres

Pesquisando na net achei este código e dei uma revisada nele. Ele pode ti ajudar.

import java.awt.BorderLayout;  
import java.awt.Container;  
import java.awt.Graphics;  
import java.awt.image.BufferedImage;  
import java.io.File;  
import java.io.IOException;  
import javax.imageio.ImageIO;  
import javax.swing.ImageIcon;  
import javax.swing.JFrame;  
import javax.swing.JLabel;  
import javax.swing.JScrollPane;  
  
public class Redimensiona {  
     
   public static BufferedImage Redimension(String caminho ,int w, int h) throws IOException {  
        
      BufferedImage fundo = null, image = null;  
        
      try {   
           
         fundo = ImageIO.read(new File(caminho));  
         image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);  
         Graphics g = image.getGraphics();  
         g.drawImage(fundo.getScaledInstance(w,h,10000), 0, 0, null);  
         return image;   
           
      }    
        
      catch (IOException e1) {   
           
         fundo = new BufferedImage(1,1,BufferedImage.BITMASK);   
         return fundo;  
           
      }   
        
   }    
     
   public static void main(String[] args) throws IOException {  
        
      BufferedImage image = Redimension("Imagens/foto0.bmp",700,700);  
      ImageIO.write(image,"JPG",new File("Imagens/image2.jpg"));  
        ImageIcon icon = new ImageIcon(image);  
      JLabel imageLabel = new JLabel(icon);  
      JFrame frame = new JFrame();  
      frame.setTitle("Redimensiona Imagem");  
      Container contentPane = frame.getContentPane();  
      contentPane.setLayout(new BorderLayout());  
      contentPane.add(new JScrollPane(imageLabel),BorderLayout.CENTER);  
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
      frame.setSize(500,500);  
      frame.setVisible(true);  
           
   }  
     
}
Criado 30 de dezembro de 2011
Ultima resposta 31 de dez. de 2011
Respostas 1
Participantes 2