#!/usr/athena/bin/perl

use lib '/usr/local/lib/perl5/site_perl';
use Fcntl 'SEEK_SET';
use strict;
use warnings;
use GD;

my $out = '/tmp/pngs.data';
open(PNGS,">$out") || die "Can't write $out : $!";
for (my $num = 1; $num <= 5000000; $num += 1) {
  if ($num % 1000 == 0) {
    print "Doing num $num\n";
  }
  my $digits = 1 + int(log($num) / log(10));
  my $im = new GD::Image($digits * 8 + 4, 16 + 4);
  my $white = $im->colorAllocate(255,255,255);
  my $black = $im->colorAllocate(0,0,0);  
  $im->fill(1,1,$black);
  $im->string(GD::Font->MediumBold,4,3,$num,$white);
  my $data = $im->png(9);
  if (length($data) > 199) {
    die "$num is length " . length($data);
  }
  my $length = pack('C',length($data));
  sysseek(PNGS,200*($num - 1),SEEK_SET);
  syswrite(PNGS,$length,1);
  syswrite(PNGS,$data,199);
}
close PNGS;

