Crazy as this sounds, I had to to almost the exact same thing recently. I too used Imager. Not only did my images need text in exact locations, but they also needed certain markings, etc. Here's how I did it:
- First create a tiff of the desired size with any needed markings, at 600 dpi and black and white mode.
- In perl, use Imager to open that image, create a font, and then write to it in the specified coordinates. Something like:
my $img = Imager->new();
$img->open( file => '/path/to/tiff/file' );
my $color = Imager::Color->new("#000000");
my $font = Imager::Font->new(
file => '/path/to/ttf/font',
color => $color,
text => $stuff_to_write,
x => $x,
y => $y,
font => $font,
My project also had the requirement that each letter of each word need to be in a certain place, so I just had a wrapper sub that would take a word and the x/y coords, split the word into individual letters and then use a 'spacing' var to increment the x value and print each letter one by one.
-- More people are killed every year by pigs than by sharks, which shows you how good we are at evaluating risk. -- Bruce Schneier