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







12 comentários
Feed de comentários deste artigo
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
8 abril 2010 às 23:29
thiago lopes
Amigo estou utilizando o eclipse galileu e estou tendo dificuldade em importar imagens para um pacote, ou seja, não estou conseguindo achar nenhuma opção que me mostre para eu fazer esta opção.Você poderia me ajudar por favor?
Fico no aguardo…
25 julho 2010 às 14:43
teste
new alert(“Virus!”)
23 agosto 2010 às 19:51
Vanderci Eduardo
Gostaria de saber como faço para enviar uma imagem (foto) pela rede para uma pasta e, caso haja um outro arquivo com o mesmo nome, renomear o que está sendo gravado, adicionando _1, _2, _3 e assim por diante.