Trabalhando com a Classe BufferedImage // pacotes do AWT import java.awt.image.BufferedImage; import java.awt.image.Raster; import java.awt.image.WritableRaster; // leitura em modo imediato - para J2SE 1.4+ import javax.imageio.ImageIO; // Instanciação de um objeto da classe BufferedImage BufferedImage ima_in, ima_out; // Carregando de uma imagem através da classe BufferedImage BufferedImage ima_in = null; String image_name = "nemo500-270.jpg"; File file = new File(image_name); try { ima_in= ImageIO.read(file); } catch(Exception e) { System.out.println("Imagem '" + image_name + "' nao existe."); System.exit(0); } // Lendo informações do cabeçalho de uma imagem aberta int ncol = ima_in.getWidth(); int nlin = ima_in.getHeight(); int type = ima_in.getType(); // Criando uma imagem de saída através da classe BufferedImage BufferedImage ima_out = new BufferedImage(ncol, nlin, BufferedImage.TYPE_BYTE_GRAY); // 10 - TYPE_BYTE_GRAY // Obtendo acesso aos dados (matriz) de uma BufferedImage Raster raster = ima_in.getRaster(); // declara e instancia objeto raster só para leitura WritableRaster wraster = ima_out.getRaster(); // declara e instancia objeto raster para escrita // Lendo dados das bandas de uma imagem aberta int r = raster.getSample(x,y,0); // le dado da banda 0 da imagem de entrada int g = raster.getSample(x,y,1); // le dado da banda 1 da imagem de entrada int b = raster.getSample(x,y,2); // le dado da banda 2 da imagem de entrada // Escrevendo dados de uma banda de uma imagem criada int valor_saida = (r+g+b)/3; wraster.setSample(x,y,0,valor_saida);