Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

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.

HTH

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


Comment on Re: Creating Tiff's from perl
Download Code
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?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://473971]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (15)
As of 2015-07-02 13:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (40 votes), past polls