Palavras-chave: imagem, imagens, ler, salvar, carregar, editar, JPG, JPEG, GIF, PNG, imageio
Ler e escrever arquivos de imagens em Java é tão fácil que até nem parece Java:
BufferedImage imagem = ImageIO.read(new File("mariabonita.gif"));
// fazer algo com a imagem...
ImageIO.write(imagem, "PNG", new File("mariabonita.png"));
Já que foi fácil, vamos aproveitar esta dica para aprender também como alterar os pixels da imagem. Para isso, use os métodos getRGB()/setRGB() da classe BufferedImage. O método getRGB() retorna um array de int que representa os valores RGB de cada ponto da imagem.
Se você tivesse uma matriz, você poderia referenciar os pixels como matriz[lin][col]. Mas, aqui, como na maioria dos programas de processamento de imagens, temos um array para representar a imagem. Assim, temos que usar a notação pixels[w * lin + col], onde w é a largura da imagem.
O exemplo a seguir lê uma imagem, colore-a de maneira aleatório-psicodélica e a salva em outro arquivo:
BufferedImage imagem = ImageIO.read(new File("qualquer.jpg"));
int w = imagem.getWidth();
int h = imagem.getHeight();
int[] pixels = imagem.getRGB(0, 0, w, h, null, 0, w);
Random r = new Random();
for (int col = 0; col < w; col++) {
for (int lin = 0; lin < h; lin++) {
pixels[w * lin + col] =
new Color(r.nextInt(255), col % 255, lin % 255).getRGB();
}
}
imagem.setRGB(0, 0, w, h, pixels, 0, w);
ImageIO.write(imagem, "PNG", new File("arteabstrata.png"));







5 comments
Comments feed for this article
30 Maio 2007 às 5:27
devan
Gostei muito do artigo….
16 Setembro 2007 às 22:14
Adran
Muito bom o seu artigo, mas eu gostaria de lhe fazer uma pergunta, provavelmente de iniciante -.-
Eu preciso criar uma matriz[][] a partir de uma bmp monocromatica.
Tentei carregar para um buffered image, e criei um laço for para transferir pixel a pixel a informação da imagem no buffer para a matriz. Mas não funcionou corretamente.
Por favor, poderia me dizer como consigo fazer isso?
10 Outubro 2007 às 11:41
Rui Nunes
Gostei do artigo, contudo e como sou um principiante em JAVA, e tenho um trabalho para fazer estou bastante desorientado com a linguagem.
Gostaria de obter o código fonte para a seguinte situação:
1º- Pretendo abrir uma janela e através dela escolher um ficheiro de imagem;
2º- Depois de ter a imagem aberta, queria fazer a ampliação e a redução da mesma.
Pode ser simples para vocês, mas para mim é bastante complicado.
Gostaria que me ajudassem, enviando-me o código fonte em JAVA urgentemente.
Muito obrigado pela ajuda, desde já.
Rui Nunes
3 Abril 2008 às 23:50
ramon
brother manda pra mim tb estou com esse mesmo problema, porfavor não sei oq fazer
11 Novembro 2008 às 21:04
waldemar
Caro amigo,
Estou precisando pegar os pixels e colocar em uma matriz e gravar em txt, para poder fazer calculo de algoritmo genetico!
se puder me ajudar agradeço!