You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
846 B
Perl

#! /usr/bin/perl -w
use strict;
use List::Util qw[max];
# read a GIMP gpl palette file and write out a netpbm PPM image
# Liam Quin, https://www.delightfulcomputing.com/ 2021
my $inheader = 1;
my @colours;
my $max = 0;
while (<>) {
chomp;
if ($inheader) {
if (m/^GIMP Palette/) {
next;
}
if (m/^NameL/) {
next;
}
if (m/^#/) {
$inheader = 0;
next;
}
} elsif (m/^\s*(\d+)\s+(\d+)\s+(\d+).*$/) {
push @colours, [ $1, $2, $3 ];
$max = max($max, $1, $2, $3);
}
}
if (!@colours) {
die "$0: no colours found";
}
if ($max <= 0) {
die "$0: max value found is 0 which I think is an all-black palette";
}
# our image will be 1 pixel wide...
print "P3\n1 " . scalar(@colours) . "\n";
print "${max}\n";
# now the image data
foreach (@colours) {
print $_->[0], " ", $_->[1], " ", $_->[2], "\n";
}