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"));







9 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!
20 janeiro 2010 às 0:57
teste
wwwwww wwwwwwww wwwwwwwwwwwwwwwwww
sdas asdasdas sdas d sad asdasdas sdas d sad asdasdas sdas d sad
dasd asdasdas sdas d sad asdasdas sdas d sad asdasdas sdas d sad
asdasdas sdas d sad as asdasdas sdas d sad asdasdas sdas d sad
wwwwww wwwwwwww wwwwwwwwwwwwwwwwww
sdas asdasdas sdas d sad asdasdas sdas d sad asdasdas sdas d sad
dasd asdasdas sdas d sad asdasdas sdas d sad asdasdas sdas d sad
asdasdas sdas d sad as asdasdas sdas d sad asdasdas sdas d sad
wwwwww wwwwwwww wwwwwwwwwwwwwwwwww
sdas asdasdas sdas d sad asdasdas sdas d sad asdasdas sdas d sad
dasd asdasdas sdas d sad asdasdas sdas d sad asdasdas sdas d sad
asdasdas sdas d sad as asdasdas sdas d sad asdasdas sdas d sad
wwwwww wwwwwwww wwwwwwwwwwwwwwwwww
sdas asdasdas sdas d sad asdasdas sdas d sad asdasdas sdas d sad
dasd asdasdas sdas d sad asdasdas sdas d sad asdasdas sdas d sad
asdasdas sdas d sad as asdasdas sdas d sad asdasdas sdas d sad
wwwwww wwwwwwww wwwwwwwwwwwwwwwwww
sdas asdasdas sdas d sad asdasdas sdas d sad asdasdas sdas d sad
dasd asdasdas sdas d sad asdasdas sdas d sad asdasdas sdas d sad
asdasdas sdas d sad as asdasdas sdas d sad asdasdas sdas d sad
20 junho 2009 às 20:08
triplox
muito bom, mas diga-me: vc poderia nos informar como posso redimensionar a imagem tambem, mas que seja um redimensionamento automático, sem definir altura e largura (JSP ou em servlet).
Obrigado.
6 setembro 2009 às 12:48
Du
Como faço para ao clicar em determinados pontos da imagem (esses pontos podem ser pré-definidos), fique de forma que ao clicar nesses pontos, ele mude de cor e não de forma aleatória, e sim cores que eu mesmo defino?
20 janeiro 2010 às 0:54
teste
dsad sd asjdkl sjdlkja sd ajklsd
asdas
dasd
asd
asd
as
da
sd
asddddddddddddddddddddddddsd
asd
asd
asdasdadsadasdasd
sdas
da
sd
as
ddddddddddddddddddddddasdasda
da
sd
asdasda