}
my $colour_type;
+my $bits;
my $sline_len;
my $sline_left = 0;
my $row = 0;
Interlace: $inter
EOS
$colour_type = $ct;
- my $channels = $ct == 2 ? 3 : $ct == 4 ? 2 : $ct == 6 ? 4 : 0;
+ $bits = $d;
+ my $channels = $ct == 2 ? 3 : $ct == 4 ? 2 : $ct == 6 ? 4 : 1;
my $bitspp = $channels * $d;
$sline_len = int((($w * $bitspp) + 7) / 8);
++$sline_len; # filter byte
+ print " Line length: $sline_len\n";
}
elsif ($type eq 'sRGB') {
print " Rendering intent: ", ord($payload), "\n";
my @when = unpack("nCCCCC", $payload);
printf " Date: %d-%02d-%02d %02d:%02d:%02d\n", @when;
}
+ elsif ($type eq 'bKGD') {
+ if ($colour_type == 2 || $colour_type == 6) {
+ my @rgb = unpack("nnn", $payload);
+ printf " Background: rgb$bits(%d,%d,%d)\n", @rgb;
+ }
+ elsif ($colour_type == 0 || $colour_type == 4) {
+ my $g = unpack("n", $payload);
+ printf " Background: grey$bits(%d)\n", $g;
+ }
+ if ($colour_type == 3) {
+ my $index = unpack("C", $payload);
+ printf " Background: index(%d)\n", $index;
+ }
+ }
elsif ($type eq "IDAT" && $image) {
$sline_len
or die "IDAT before IHDR!?";