#!/usr/local/bin/perl -w
use strict;
use Imager;

my $i = Imager->new();
$i->read(
    file => "test.jpg",
    type => "jpeg" ) or die;

print imgavg( $i,
   $i->getwidth(), $i->getheight() ), "\n";

use Inline C =>
  <<'EOT' => WITH => 'Imager';

int brightness(i_color *val) {
    return((val->channel[0] +
            val->channel[1] +
            val->channel[2])/3);
}

int imgavg( Imager im, int width,
            int height ) {
      i_color val;
      int     x,y;
      float   sum;
      long    pixels;

      for( x=0; x<width; x++ ) {
          for( y=0; y<height; y++ ) {
              i_gpix(im, x, y, &val);
              sum += brightness( &val );
          }
      }

      return sum / width / height;
}

EOT

1;