hi,

i am having a problem using an image verification class as a vendor. i
can use the class outside of cake fine but when included as a vendor,
the imagettftext() function within the class will not find its font (i
have got the font in the same directory as the class, where it should
be)

can anyone suggest why this might be? you can see it working here:

http://devweb.loopfruit.co.uk/picture.php

and not working here (within cake)

http://cake.lukem.co.uk/users/imageTest

the class code is:

<?

        //
        // Verification Image.
        // v0.1
        //
        // An antispam image, generates a code, creates an image out of it,
and
        // registers this code in a session. User input will be checked
against
        // this session value. If it is valid no spambot is the one that is
submitting
        // this form.
        //
        // Install instructions:
        // Put the file of your ttf in the same directory as this script.
Also note that
        // you call session_start() before using this class in any script.
        //
        //
        // As always I appreciate feedback. So don't hesitate to contact me.
        //
        // author: Jaap van der Meer ([EMAIL PROTECTED])
        //



        class verification_image {
                // the image that will be outputted
                private $image;

                // the width of the image thats outputted
                private $_w;

                // the height of the image that's outputted
                private $_h;

                // the color used for the text
                private $text_color;

                // the background used in the the text
                private $bg_color;

                // the font to be user
                public $ttf_font;

                // constructor to setup the image properties
                // width - the width of the image
                // height - the height of the image
                // font - the font to be used, must be in same directory
                function verification_image($width = 120, $height = 40, $font = 
"")
{
                        $this->_w = $width;
                        $this->_h = $height;

                        $this->ttf_font = $font;
                }


                // initializes the image
                function init() {

                        $this->image = imagecreate($this->_w, $this->_h);
                        //$background_color = imagecolorallocate($this->image, 
255, 255,
255);
                        $this->set_bgcolor(255,255,255);
                        $this->set_textcolor(255,34,91);

                }

                // sets the bgcolor
                function set_bgcolor($r,$g,$b) {
                        $background_color = imagecolorallocate($this->image, 
$r, $g, $b);

                }

                // sets the textcolor
                function set_textcolor($r,$g,$b) {
                        $this->text_color = imagecolorallocate($this->image, 
$r, $g, $b);
                }

                // draws the string
                function draw() {
                        $code = $this->generate_code();
                        // register the code in the session
                        $this->register_code($code);

                        // offsets for x and y in the image
                        $x = 1;
                        $y = 20;

                        // walk through each character in the
                        // code, to print it
                        for($i = 0; $i < strlen($code); $i++) {

                                $calc_y = rand(200,250) / 10;
                                //imagestring( $this->image, 3, $x, $calc_y,  
$code{$i}, $this-
>text_color);
                                $angle = rand(-20,20);
                                $this->write_string($x, $calc_y, $angle, 
$code{$i});
                                        $x += rand(17,19) ;
                        }

                }


                function write_string($x_offset, $y_offset, $angle, $string) {

                                // check if a font is set
                                if($this->ttf_font != "") {
                                        // does the file font exist on the 
server
                                        if(file_exists($this->ttf_font)) {
                                                putenv('GDFONTPATH=' . 
realpath('.'));
                                                $font_size = 20;
                                                $grey = 
imagecolorallocate($this->image, 128, 128, 128);
                                                // draw a shadow
                                                imagettftext($this->image, 
$font_size, $angle, $x_offset + 1,
$y_offset + 1, $grey, $this->ttf_font, $string);
                                                // draw the text
                                                imagettftext($this->image, 
$font_size, $angle, $x_offset,
$y_offset, $this->text_color, $this->ttf_font, $string);

                                        } else {
                                                die("Font doesn't exist, or not 
in same directory as a .ttf");
                                        }
                                } else {
                                        die("No font set.");
                                }
                }

                // generates a time based random code
                // offset is the minutes to be added
                function generate_code() {
                        // define the seed out of which characters the seed 
will be
constructed
                        $string = md5(rand(0,9999));
                        $output = substr($string, 14, 6);
                        return $output;
                }


                // returns the code that is registered
                // in the session
                function get_registered_code() {
                        return $_SESSION['verification_key'];
                }

                // sets the code, this will be registered as
                // the code in the session
                function register_code($c) {
                        $_SESSION['verification_key'] = $c;
                }

                // checks if the code is valid
                function validate_code($code) {
                        return $code == $this->get_registered_code();
                }

                // output it to screen
                function _output() {
                        // initialize the image
                        $this->init();
                        // draw the image
                        $this->draw();

                        header("Content-type: image/png");
                        imagepng($this->image);

                        // destroy the image to free resources
                        imagedestroy($this->image);
                }

}




?>

anyone got any ideas?

thanks,

lukemack.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to