Mit dem folgenden Skript wird die Intensität der Verschiedenen
Farben eines Fotos ermittelt und in eine Datendatei sowie in eine neue
Grafik ausgegeben. Das Ergebnis ist dan einerseits ein
Spektrum mit der Intensitätsverteilung über alle Farben und andererseits die
Datendatei, die mit Calc von OpenOffice weiter verarbeitet werden kann.
Perl-Code:
#!/usr/bin/perl
use GD;
use Math::Trig;
#----------------------------------------------------------
my $datadir='./';
my $testfile='Spektrum_CuCl2.jpg';
my $graph=100;
my $analyse='capture_analyse_CuCl2.png';
my $daten='werte_capture_CuCl2.dat';
#----------------------------------------------------------
my $im = new GD::Image($testfile) || die $!;
my ($width,$height) = $im->getBounds();
print "[$width,$height]\n";
my $Max=$height*3*255;
my $imout=new GD::Image($width,$height+$graph) || die $!;
my $white = $imout->colorAllocate(255,255,255);
my $black = $imout->colorAllocate(0,0,0);
my $red = $imout->colorAllocate(255,0,0);
my $blue = $imout->colorAllocate(0,0,255);
$imout->rectangle(0,0,$width,$graph,$black);
$imout->fill(50,50,$white);
$imout->copy($im,0,$graph,0,0,$width,$height);
for(my $i=0;$i<$width;$i++)
{
my $sum=0;
for( my $j=0;$j<$height;$j++)
{
(my $r,my $g,my $b)=$im->rgb($im->getPixel($i,$j));
$sum+=($r+$g+$b);
}
print "$i\t".(100/$Max*$sum)."\n";
open (datei, ">>$daten") or die $!;
print datei "$i\t".(100/$Max*$sum)."\n";
close (datei);
my $ynew=$graph-($graph/$Max*$sum);
$imout->setPixel($i,$ynew,$black) ;
}
my $png = $imout->png;
open FOO, ">$analyse";
binmode FOO;
print FOO $png;
close(FOO);
Fehlt noch!