// Calculate average "luminosity" (luma component) of an JPEG image.
// Luma = 0.299 R + 0.587 G + 0.114 B
// Compile: gcc lumiCalc.c -o lumiCalc -lgd

#include <stdio.h> 
#include <gd.h> 
#include <stdlib.h>  

int main(int argc, char *argv[]) {
 gdImagePtr image;
 FILE *png;
 int c,x,y;
 float sum;
 if (argc<2) {
  printf("Syntax: lumiCalc <image.jpg>\n");
  exit(1);
 }
 png = fopen(argv[1], "rb");
 if(png==NULL) {
  printf("Unable to open %s\n",argv[1]);
  exit(1);
 }
 image = gdImageCreateFromJpeg(png);
 fclose(png);
 for (x=0;x<image->sx;x++) {
  for (y=0;y<image->sy;y++) {
   c=gdImageGetPixel(image,x,y);
   sum+=gdTrueColorGetRed(c)*0.299+gdTrueColorGetGreen(c)*0.587+gdTrueColorGetBlue(c)*0.114;
  } 
 }
 printf("%d\n",sum/image->sx/image->sy);
 gdImageDestroy(image);
 return 0;
}