Algumas pessoas têm a vontade de saber como as imagens são representadas e como manipulá-las. Basicamente, uma imagem é uma matriz formada por pixels. Cada pixel é representado por um inteiro de 32 bit da seguinte maneira:
00000000 00000000 00000000 11111111
^ Alpha ^Red ^Green ^Blue
Os valores do alpha, red, green e blue são valores inteiros entre 0 e 255.
O valor máximo para o elemento alfa significa que o pixel será totalmente opaco e o valor mínimo significa transparência total.
Nesta postagem, vamos mostrar como fazer uma transformação simples chamada negativo. O objetivo desta transformação é “inverter” a valor de cada cor em cada pixel da imagem.
import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class pdi { public static void main(String args[] ) throws IOException{ BufferedImage imagem = null; imagem = ImageIO.read( new File("C:\\Users\\ufc\\workspace\\PDI\\src\\tux.png") ); int w = imagem.getWidth(); int h = imagem.getHeight(); //retorna um vetor inteiro representando os pixels da imagem int pixels[] = imagem.getRGB(0, 0, w, h, null, 0, w); for (int col = 0; col < w; col++) { for (int lin = 0; lin < h; lin++) { //Pega a cor em cada pixel Color c = new Color(pixels[lin*w + col]); pixels[lin*w + col] = new Color(255-c.getRed(),255-c.getBlue(),255-c.getGreen()).getRGB(); } } //seta um vetor inteiro representando os pixels da imagem imagem.setRGB(0, 0, w, h, pixels, 0, w); ImageIO.write(imagem, "PNG", new File("C:\\Users\\ufc\\workspace\\PDI\\src\\tux2.png")); } }
Um comentário:
Show!
David Sena
Postar um comentário