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"));
Gostei muito do artigo….
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?
Faça a alteração seguinte no código acima:
…
for (int col = 0; col < w; col++)
for (int lin = 0; lin < h; lin++)
matriz[col][lin] = pixels[w * lin + col];
…
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
brother manda pra mim tb estou com esse mesmo problema, porfavor não sei oq fazer
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!
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.
isso aki deve resolver seu problema, caso seja redimensionar no próprio java.
ImageIcon img = new ImageIcon (Form.class.getClassLoader().getResource(“Imagens/botões/controle/btoExcluir.png”));
img.setImage(img.getImage().getScaledInstance(50, 50, 100));
Espero ter ajudado
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?
tenta usar botões, e neles vc define as cores que quer usar, talvez funcione.. rsrs
ou não.. :(
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…
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.
Meu problema está sendo com o tipo de extensão da imagem (no caso, .ppm). O BufferedImage não tá abrindo essa extensão…
O programa que quero fazer é, dada uma imagem .ppm original e, quando o usuário passar algumas coordenadas, através dessas, fazer um corte na imagem e salvar só a parte referente ao recorte em outro arquivo .ppm
Alguém pode me dá uma idéia de como resolver essa bronca?
Gostaria de saber se tem como redimensionar a imagem??
Idem, to quase ficando loco com isso xD
Boa tarde
Estou precisando ler os dados de uma imagem e gravar em banco de dados…por exemplo:
Uma foto que contenha o número 152552, em alguma parte.
Agradeço desde já
Marcus
Olá, gostei muito do seu artigo, você usou uma abordagem de facil entendimento. Está de parabéns.
Porém estou fazendo um trabalho de faculdade e estou tendo dificuldades para implementa-lo.
Aí vai…
Como faço para comparar duas imagens e ver se elas são iguais. E se forem diferentes, como detectar essas diferenças entre as imagens…
Se você puder me ajudar ficarei grato ou pelo menos me colocar no caminho certo…
Desde já agradeço
Desde já agradeço
Adorei!
Gostaria de saber como pegar cada pixel da imagem e transformá la em outra imagem de tamanho maior, como um foto mosaico.. se puder ajudar!
yasmine,
provavelmente usando Java2D você consegue. Dá uma olhada nesses posts do ViniGodoy que você deve ter uma ideia.
http://www.pontov.com.br/site/index.php/java/48-java2d/111-trabalhando-com-imagens
Qual o melhor componente para se carregar as imagens na tela? JPanel, JFrame ou outro?
Olá, como faria a extração de uma imagem de um banco de dados?
pergunta:
como separar um gif em partes?