Mudar pixel de uma imagem

0 respostas
S

Galera seguinte preciso pegar uma imagem bmp, e convertela para cinza, eu sei que tem o método

ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);

ColorConvertOp op = new ColorConvertOp(cs, null);

image = op.filter(image, null);

ele faz isso automaticamente, mas como é um trabalho de faculdade preciso fazer isso manualmente, bom em c++ seria desta forma:

int R,G,B, i,j,L;

TColor cor;

for(i=0; i<=Image1->Width; i++)

for(j=0; j<=Image1->Height; j++)

{

cor=Image1->Canvas->Pixels[i][j];

R=GetRValue(cor);

G=GetGValue(cor);

B=GetBValue(cor);

L=0.299<em>R + 0.587</em>G + 0.114*B;

Image2->Canvas->Pixels[i][j]=RGB(L,L,L);

}

em java eu fiz assim:

image2=new BufferedImage(image.getWidth(),image.getHeight(),BufferedImage.TYPE_INT_RGB);

int lar=image.getWidth(),alt=image.getHeight();

int i=0,j=0,r,g,b,l,rgb;

while(i<alt){

while(j<lar){

Color cor=new Color(image.getRGB(j,i));

Color c=new Color(Math.round(0.299f<em>cor.getRed()) + Math.round(0.587f</em>cor.getGreen()) + Math.round(0.114f*cor.getBlue()));

image.setRGB(j,i,c.getRGB());

j++;

}

i++;

}
icon=new ImageIcon(image);

img=new JLabel(icon);

JFrame frame = new JFrame();

frame.setTitle(Imagem);

Container contentPane = frame.getContentPane();

contentPane.setLayout(new BorderLayout());

contentPane.add(new JScrollPane(img),BorderLayout.CENTER);

frame.setSize(500,500);

frame.setVisible(true);

bom deveria funcionar mas a imagem, não sofre nenhuma alteração, ela continua do mesmo jeito alguem pode me dar uma dica de como resolver isso?

Criado 10 de outubro de 2007
Respostas 0
Participantes 1