Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Creating Tiff's from perl

by mpeters (Chaplain)
on Jul 11, 2005 at 15:17 UTC ( #473971=note: print w/replies, xml ) Need Help??

in reply to Creating Tiff's from perl

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, ); $img->string( 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

Replies are listed 'Best First'.
Re^2: Creating Tiff's from perl
by JediWizard (Deacon) on Jul 11, 2005 at 15:44 UTC

    Thank you for you advice. This code does come closer to what I want, but not quite there yet. Even with a one bit input image, with Group4 fax compression, the outputed image becomes 8 bit, without compression.

    They say that time changes things, but you actually have to change them yourself.

    —Andy Warhol

      I'm sorry, I forgot to show how to write out the image, silly me!
      $img->write( { file => $tmp->filename, type => 'tiff', class => 'fax', } );
      And then in order to get the Group4 compression I did resort to ImageMagick's convert util.
      system("convert -page Letter -compress Group4 $filename $filename") +;
      The last part I'm still not completely happy with, but since this is a batch process I didn't have to worry so much about having the extra system call.

      -- More people are killed every year by pigs than by sharks, which shows you how good we are at evaluating risk. -- Bruce Schneier

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://473971]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (3)
As of 2018-07-21 19:51 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (450 votes). Check out past polls.