RE: Writing text into images, and setting text size

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Just a correction...

Replace at the beginning of the script (I had some typos, while extracting the code from the original script)

> $imW = 200;
> $imH = 100;

By this..

$imgW = 200;
$imgH = 100;

Regards,

Rob


Andrés Robinet | Lead Developer | BESTPLACE CORPORATION
5100 Bayview Drive 206, Royal Lauderdale Landings, Fort Lauderdale, FL 33308 | TEL 954-607-4207 | FAX 954-337-2695
Email: info@xxxxxxxxxxxxx  | MSN Chat: best@xxxxxxxxxxxxx  |  SKYPE: bestplace |  Web: http://www.bestplace.biz | Web: http://www.seo-diy.com

> -----Original Message-----
> From: Andrés Robinet [mailto:agrobinet@xxxxxxxxxxxxx]
> Sent: Tuesday, December 18, 2007 1:33 AM
> To: 'Dave M G'
> Cc: 'PHP List'
> Subject: RE:  Writing text into images, and setting text size
> 
> I'm tempted to say that the problem is that the system is not finding
> the font... you'd need to include the full path to the font (and it
> must be readable for the user PHP runs on behalf).
> 
> Try the following:
> 
> Just for testing put the font and the script that generates the image
> in the SAME directory, so let's say you have something like this:
> 
> arial.ttf (<<-- I just copied it from my windows fonts folder)
> PrintImage.php
> 
> BOTH IN THE SAME DIRECTORY...
> Then, the code for PrintImage.php would look like the following...
> 
> <?php
> /************************/
> /* Begin PrintImage.php */
> 
> // dirname(__FILE__) means "the full path to the directory where this
> file <PrintImage.php> is sitting"
> $fontFile = dirname(__FILE__).'/arial.ttf';
> 
> $imW = 200;
> $imH = 100;
> $im = imagecreatetruecolor($imgW, $imgH);
> $bgColor = imagecolorallocate($im, 238, 239, 239);
> $borderColor = imagecolorallocate($im, 208, 208, 208);
> $textColor = imagecolorallocate($im, 46, 60, 31);
> $whiteColor = imagecolorallocate($im, 255, 255, 255);
> $fontSize = 18;
> $textAngle = 0;
> $codeString = 'Works!';
> 
> // Print rectangle
> imagefilledrectangle($im, 0, 0, $imgW, $imgH, $bgColor);
> imagerectangle($im, 0, 0, $imW-1, $imH-1, $borderColor);
> 
> // Print Text (Calculate Position)
> $box = imagettfbbox($fontSize, $fontAngle, $fontFile, $codeString);
> $x = (int)($imgW - $box[4]) / 2;
> $y = (int)($imgH - $box[5]) / 2;
> imagettftext($im, $fontSize, $fontAngle, $x, $y, $textColor, $fontFile,
> $codeString);
> 
> // Output... no caching
> header("Content-type: image/png");
> header("Cache-Control: no-cache, must-revalidate");
> header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
> imagepng($im);
> 
> /* End PrintImage.php */
> /**********************/
> ?>
> 
> Then you know what you do... you load PrintImage.php into your browser
> and you'll get a nice gray rectangle with the word "Works!" in the
> center of it. If you don't get that... then you have a problem that is
> not related to path or to PHP per-se... maybe it's a GD issue, or the
> font is broken... or whatever other issue... but this code works in
> windows and linux provided that you get the "arial.ttf" in the same
> directory as PrintImage.php.
> 
> And... use dirname(__FILE__) or similar (meaning ABSOLUTE PATHS), as
> much as possible to reference other files for inclusion or
> processing... doing "./myfile.php" or "../myfile.php" leads to
> headaches... and usually in the moment you can't take a headache (which
> is project deadlines).
> 
> Hope this helps,
> 
> Rob
> > -----Original Message-----
> > From: Dave M G [mailto:martin@xxxxxxxxxxxxx]
> > Sent: Tuesday, December 18, 2007 12:31 AM
> > To: Andrés Robinet
> > Cc: 'PHP List'
> > Subject: Re:  Writing text into images, and setting text size
> >
> > Andrés,
> >
> > Thank you for responding.
> >
> > > Deploy the fonts along with your scripts... that's the only way I
> > know.
> > > ... I do so for a custom CAPTCHA script I've made.
> >
> > This sounds like a good solution. I'm having a little trouble
> > implementing it, however.
> >
> > I have what I believe is a freely distributable font called
> > "FreeSans.ttf", and I put it in a directory called "fonts" in the
> base
> > directory of my site.
> >
> > However, this seems not to work:
> >
> > $font = 'fonts/FreeSans.ttf';
> > imagettftext($image, 20, 0, $x, $y, $textColour, $font, $text);
> >
> > Putting a slash in front to specify starting from the base directory
> -
> > '/fonts/FreeSans.ttf' - does not seem to work either.
> >
> > Looking in the manual, it seemed that maybe I needed to set the font
> > path with putenv:
> >
> > $path = realpath('fonts');
> > putenv('GDFONTPATH=' . $path);
> >
> > But this yielded no results.
> >
> > Am I still getting the syntax wrong somehow?
> >
> > Thank you for any advice.
> >
> > --
> > Dave M G
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux