#!/usr/bin/perl # Convert a png to a cip use strict; use GD; use IO::File; die "Usage: $0 \n" unless @ARGV == 2; my $in = GD::Image->new($ARGV[0]); my ($width, $height) = $in->getBounds; my @data; for (my $y = 0; $y < $height; $y++) { for (my $x = 0; $x < $width; $x++) { my $color = $in->getPixel($x, $y); my ($r, $g, $b) = $in->rgb($color); $r /= 255; $g /= 255; $b /= 255; my $intense = .299*$r + .587*$g + .114*$b; if ($intense < .25) { push @data, 3; } elsif ($intense < .5) { push @data, 2; } elsif ($intense < .75) { push @data, 1; } else { push @data, 0; } } } # Collapse into hex my @hex_data; for (my $i = 0; $i < @data; $i+=4) { push @hex_data, sprintf("%X", $data[$i+2]+4*$data[$i+3]); push @hex_data, sprintf("%X", $data[$i]+4*$data[$i+1]); } my $out = new IO::File ">$ARGV[1]"; print $out @hex_data; $out->close; print "$width $height\n";