//24-bpp P6 PPM solution: image:=File("lena.ppm","rb").read(); start:=image.find("\n255\n")+5; // Get sizeof PPM header foreach n in ([start..image.len()-1,3]){ // Transform color triplets r,g,b:=image[n,3]; // Read colors stored in RGB order l:=(0.2126*r + 0.7152*g + 0.0722*b).toInt(); // Derive luminance image[n,3]=T(l,l,l); } File("lenaGrey.ppm","wb").write(image);