Here is what I have so far. It causes an gd-jpeg: JPEG library reports unrecoverable error: and crashes perl. Any ideas?
#!/usr/bin/perl -w
use strict;
use GD;
use File::Slurp;
my $width = 102;
my $height = 123;
my $truecolor;
my $x;
my $y;
my $image = GD::Image->new([$width,$height],$truecolor);
my $dbz1 = $image->colorAllocate(0,0,0); #-30
my $dbz2 = $image->colorAllocate(204,255,255); #-28
my $dbz3 = $image->colorAllocate(204,153,204); #-25
my $dbz4 = $image->colorAllocate(153,102,153); #-20
my $dbz5 = $image->colorAllocate(102,51,102); #-15
my $dbz6 = $image->colorAllocate(204,204,153); #-10
my $dbz7 = $image->colorAllocate(153,153,102); #-5
my $dbz8 = $image->colorAllocate(102,102,51); #0
my $dbz9 = $image->colorAllocate(102,255,255); #5
my $dbz10 = $image->colorAllocate(51,153,255); #10
my $dbz11 = $image->colorAllocate(0,0,255); #15
my $dbz12 = $image->colorAllocate(0,255,0); #20
my $dbz13 = $image->colorAllocate(0,204,0); #25
my $dbz14 = $image->colorAllocate(0,153,0); #30
my $dbz15 = $image->colorAllocate(255,255,0); #35
my $dbz16 = $image->colorAllocate(255,204,0); #40
my $dbz17 = $image->colorAllocate(255,104,0); #45
my $dbz18 = $image->colorAllocate(255,0,0); #50
my $dbz19 = $image->colorAllocate(204,51,0); #55
my $dbz20 = $image->colorAllocate(153,0,0); #60
my $dbz21 = $image->colorAllocate(255,0,255); #65
my $dbz22 = $image->colorAllocate(153,51,204); #70
my $dbz23 = $image->colorAllocate(255,255,255); #75
my $dbz24 = $image->colorAllocate(255,255,255); #80
print "$dbz1\n";
my @data = read_file('test_image.txt');
print "@data\n";
for($y=1;$y <= $height;$y++){
for($x=1;$x <= $width;$x++){
my $pixel = $x*$y-1;
print "Pixel Value: $data[$pixel]\n";
if ($data[$pixel] == 0){
$image->setPixel($x,$y,$dbz1);
}
if ($data[$pixel] > 0 and $data[$pixel] <= 10){
$image->setPixel($x,$y,$dbz5);
}
if ($data[$pixel] > 10 and $data[$pixel] <= 20){
$image->setPixel($x,$y,$dbz10);
}
if ($data[$pixel] > 20 and $data[$pixel] <= 30){
$image->setPixel($x,$y,$dbz15);
}
}
}
my $jpeg = $image->jpeg();
open JPEG,'>','test_image.jpg' || die;
print JPEG $jpeg;
#~ my $gif = $image->gif();
#~ open GIF,'>','test_image2.gif' || die;
#~ print GIF $gif;
exit;
| [reply] [d/l] [select] |
#!/usr/bin/perl -w
use strict;
use GD;
use File::Slurp;
my $width = 102;
my $height = 123;
my $image = GD::Image->new( $width, $height, 1 );
my $dbz1 = $image->colorAllocate(0,0,0); #-30
my $dbz2 = $image->colorAllocate(204,255,255); #-28
my $dbz3 = $image->colorAllocate(204,153,204); #-25
my $dbz4 = $image->colorAllocate(153,102,153); #-20
my $dbz5 = $image->colorAllocate(102,51,102); #-15
my $dbz6 = $image->colorAllocate(204,204,153); #-10
my $dbz7 = $image->colorAllocate(153,153,102); #-5
my $dbz8 = $image->colorAllocate(102,102,51); #0
my $dbz9 = $image->colorAllocate(102,255,255); #5
my $dbz10 = $image->colorAllocate(51,153,255); #10
my $dbz11 = $image->colorAllocate(0,0,255); #15
my $dbz12 = $image->colorAllocate(0,255,0); #20
my $dbz13 = $image->colorAllocate(0,204,0); #25
my $dbz14 = $image->colorAllocate(0,153,0); #30
my $dbz15 = $image->colorAllocate(255,255,0); #35
my $dbz16 = $image->colorAllocate(255,204,0); #40
my $dbz17 = $image->colorAllocate(255,104,0); #45
my $dbz18 = $image->colorAllocate(255,0,0); #50
my $dbz19 = $image->colorAllocate(204,51,0); #55
my $dbz20 = $image->colorAllocate(153,0,0); #60
my $dbz21 = $image->colorAllocate(255,0,255); #65
my $dbz22 = $image->colorAllocate(153,51,204); #70
my $dbz23 = $image->colorAllocate(255,255,255); #75
my $dbz24 = $image->colorAllocate(255,255,255); #80
print "$dbz1\n";
my @data = read_file('test_image.txt');
print "@data\n";
for my $y ( 0 .. $height - 1 ){
for my $x ( 0 .. $width - 1 ){
my $pixel = ( $y * $width ) + $x;
# print "Pixel Value: $data[$pixel]\n";
if( $data[ $pixel ] == 0 ){
$image->setPixel( $x, $y, $dbz1 );
}
elsif( $data[ $pixel ] <= 10 ){
$image->setPixel( $x, $y, $dbz5 );
}
elsif( $data[ $pixel ] <= 20 ){
$image->setPixel( $x, $y, $dbz10 );
}
elsif( $data[ $pixel ] <= 30 ){
$image->setPixel( $x, $y, $dbz15 );
}
else {
## What do you want to do if the value is greater than 30?
+?
}
}
}
open JPEG,'>','test_image.jpg' or die $!;
binmode( JPEG );
print JPEG $image->jpeg();
close JPEG;
exit;
Which may not produce exactly what you are after, but will run and should get a step forward.
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] [select] |
You're already using File::Slurp, so
write_file( 'test_image.jpg', {binmode => ':raw' }, $image->jpeg) ;
write_file( 'test_image2.gif', {binmode => ':raw' }, $image->gif) ;
| [reply] [d/l] |