| Você está aqui: Java ::: Dicas & Truques ::: Imagens e Processamento de Imagens | 
| Como converter uma imagem colorida em tons de cinza (gray scale) usando ColorSpace e ColorConvertOpQuantidade de visualizações: 10265 vezes | 
| O exemplo abaixo tira proveito da constante CS_GRAY da classe ColorSpace para converter uma imagem JPG colorida em uma imagem com tons de cinza: 
import java.awt.*;
import java.awt.color.*;
import java.io.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.*;
public class Estudos extends JFrame{
  private BufferedImage imagem;
  private BufferedImage imagemCinza;
  AreaImagem areaImagem;  
  public Estudos(){
    super("Estudos Java");
    
    Container c = getContentPane();
    c.setLayout(new BorderLayout());
	
    JButton btn = new JButton("Carregar Imagem");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          JFileChooser fc = new JFileChooser();
          int res = fc.showOpenDialog(null);
          if(res == JFileChooser.APPROVE_OPTION){
	    File arquivo = fc.getSelectedFile();  
          
            imagem = null;
          
            try{
              imagem = ImageIO.read(arquivo);
            }
            catch(IOException exc){
              JOptionPane.showMessageDialog(null, 
                "Erro ao carregar a imagem: " + 
                exc.getMessage());
            }
            if(imagem != null){
              areaImagem.imagem = imagem;
              areaImagem.repaint();  
            }
          }
        }
      }
    );
    JButton btn2 = 
      new JButton("Converter Escala Cinza");
    btn2.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          converterEscalaCinza();
        }
      }
    );
    JPanel painel = new JPanel();
    painel.setLayout(new FlowLayout());    
    painel.add(btn);
    painel.add(btn2);
    c.add(painel, BorderLayout.SOUTH);
    
    // Cria a área de exibição da imagem
    areaImagem = new AreaImagem();
    c.add(areaImagem, BorderLayout.CENTER);    
	
    setSize(400, 300);
    setVisible(true);
  }
  public void converterEscalaCinza(){
    ColorSpace cs = ColorSpace.getInstance(
      ColorSpace.CS_GRAY);
    ColorConvertOp op = new ColorConvertOp(cs, null);
    imagemCinza = op.filter(imagem, null); 
    areaImagem.imagem = imagemCinza;
    areaImagem.repaint();
  }
  
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}
// Sub-classe de JPanel para exibir a imagem
class AreaImagem extends JPanel{
  public BufferedImage imagem;
  public void paintComponent(Graphics g){ 
    super.paintComponent(g);
    
    // desenha a imagem no JPanel
    g.drawImage(imagem, 0, 0, this);
  } 
}
 | 
|  Link para compartilhar na Internet ou com seus amigos: | 
| Desafios, Exercícios e Algoritmos Resolvidos de Java | 
| Veja mais Dicas e truques de Java | 
| Dicas e truques de outras linguagens | 
| E-Books em PDF | ||||
| 
 | ||||
| 
 | ||||
| Linguagens Mais Populares | ||||
| 
			   1º lugar: Java | 


 
 





