void main(void){
int w, h; // dimensões da imagem
unsigned char *rgb; // bytes
de rgb
unsigned char r,g,b,grey; // componentes de cor
int x,y; long int k;
if
(ppm_read(&w,&h,&rgb,"test_in.ppm")==0) return;
for (y
= 0; y < h; y++) {
for (x = 0; x <
w; x++) {
k = 3*(y*w+x);
r = rgb[k];
g = rgb[k+1];
b = rgb[k+2];
grey =
(unsigned char)(0.3*r+0.6*g+0.1*b);
rgb[k] = grey;
rgb[k+1] = grey; rgb[k+2] = grey;
}
}
ppm_write(w, h, rgb,
"test_out.ppm");
free(rgb);
}