in reply to Re: How to use Imager for text
in thread How to use Imager for text

Thanks zentara, I thought we were golden. But when I cut and paste your code and run it from my host (pair networks), the .png files are totally blank, though they contain bytes.

Very weird.


—Brad
"The important work of moving the world forward does not wait to be done by perfect men." George Eliot

Replies are listed 'Best First'.
Re^3: How to use Imager for text
by zentara (Cardinal) on Oct 29, 2005 at 11:14 UTC
    Oops, I made a mistake in cut'n'pasting and got the wrong code. Try this, and make sure you have a "Generic.ttf"(just rename Arial.ttf")
    #!/usr/bin/perl use warnings; use strict; use CGI::Carp qw(fatalsToBrowser); use Imager; my $img = Imager->new(xsize=>400,ysize=>300); $img->box(filled=>1, color=>"ffffff"); #fill the background color my $blue = Imager::Color->new("#0000FF"); my $font = Imager::Font->new( file => 'Generic.ttf', index => 0, color => $blue, size => 30, aa => 1); $img->string( font=>$font, text=>'This is a test string', x=>20, y=>70); $img->write(file=>"$0.jpg", type=>"jpeg") or die "Cannot write file: +", Imager->errstr;

    I'm not really a human, but I play one on earth. flash japh

      Perfect zentara, thanks for correcting it. BTW, got it to work with .ttf fonts, but not the .dfont

      my $font = Imager::Font->new( file => 'Copperplate.dfont', type => 'ft2', index => 1, color => $blue, size => 30, aa => 1);

      did not work. Oh, well.


      —Brad
      "The important work of moving the world forward does not wait to be done by perfect men." George Eliot

        Are you seeing any errors creating the font, or in drawing the text?

        Which version of Imager are you using? If you're using 0.45 you don't need to set the type parameter.

        The following worked fine for me on both OS X and Debian stable (x86):

        #!perl -w use strict; use Imager; my $font_file = 'Copperplate.dfont'; my $img = Imager->new(xsize=>400, ysize=>300); $img->box(filled=>1, color=>'white'); my $font = Imager::Font->new(file=>$font_file, index=>1, size=>40, color=>'444444') or die "Cannot load $font_file(1): ", Imager->errstr, "\n"; $img->string(font=>$font, text=>"This is a test string", x=>20, y=>50); $img->write(file=>'test.png') or die Imager->errstr;

        Which version of freetype are you using?