Source for file Image.php
Documentation is available at Image.php
* Text_CAPTCHA_Driver_Image - Text_CAPTCHA driver graphical CAPTCHAs
* Class to create a graphical Turing test
* + refine the obfuscation algorithm :-)
* + learn how to use Image_Text better (or remove dependency)
* @license PHP License, version 3.0
* @author Christian Wenz <wenz@php.net>
* Further options (for Image_Text)
* Initializes the new Text_CAPTCHA_Driver_Image object and creates a GD image
* @param int $width Width of image
* @param int $height Height of image
* @param string $phrase The "secret word" of the CAPTCHA
* @param array $options further options (for Image_Text)
* @return mixed true upon success, PEAR error otherwise
function init($width = 200 , $height = 80 , $phrase = null , $options = null )
$this->_height = $height;
$this->_phrase = $phrase;
'font_file' => 'COUR.TTF'
$this->_options = $options;
if (!isset ($this->_options['font_size'])) {
$this->_options['font_size'] = 24;
if (!isset ($this->_options['font_path'])) {
$this->_options['font_path'] = './';
if (!isset ($this->_options['font_file'])) {
$this->_options['font_file'] = 'COUR.TTF';
$retval = $this->_createCAPTCHA ();
if (PEAR ::isError ($retval)) {
return PEAR ::raiseError ($retval->getMessage ());
return PEAR ::raiseError ('Use numeric CAPTCHA dimensions!');
* Create random CAPTCHA phrase, Image edition (with size check)
* This method creates a random phrase, maximum 8 characters or width / 25, whatever is smaller
$this->_phrase = Text_Password ::create ($len);
* This method creates a CAPTCHA image
function _createCAPTCHA ()
$options['canvas'] = array (
'width' => $this->_width,
'height' => $this->_height
$options['width'] = $this->_width - 20;
$options['height'] = $this->_height - 20;
$options['cx'] = ceil(($this->_width) / 2 + 10 );
$options['cy'] = ceil(($this->_height) / 2 + 10 );
$options['angle'] = rand(0 , 30 ) - 15;
$options['font_size'] = $this->_options['font_size'];
$options['font_path'] = $this->_options['font_path'];
$options['font_file'] = $this->_options['font_file'];
$options['color'] = array ('#FFFFFF', '#000000');
$options['max_lines'] = 1;
$options['mode'] = 'auto';
$this->_imt = new Image_Text (
if (PEAR ::isError ($this->_imt->init ())) {
return PEAR ::raiseError ('Error initializing Image_Text (font missing?!)');
$this->_imt->measurize ();
$this->_im = & $this->_imt->getImg ();
$x1 = rand(0 , $this->_width - 1 );
$y1 = rand(0 , round($this->_height / 10 , 0 ));
$y2 = rand(0 , $this->_height - 1 );
imageline($this->_im, $x1, $y1, $x2, $y2, $white);
$x1 = rand(0 , $this->_width - 1 );
$y1 = $this->_height - rand(1 , round($this->_height / 10 , 0 ));
$x2 = $this->_width - rand(1 , round($this->_width / 10 , 0 ));
$y2 = rand(0 , $this->_height - 1 );
imageline($this->_im, $x1, $y1, $x2, $y2, $white);
$cx = rand(0 , $this->_width - 50 ) + 25;
$cy = rand(0 , $this->_height - 50 ) + 25;
imagearc($this->_im, $cx, $cy, $w, $w, 0 , 360 , $white);
* Return CAPTCHA as image resource
* This method returns the CAPTCHA as GD2 image resource
* @return im image resource
* This method returns the CAPTCHA as PNG
return PEAR ::raiseError ('Error creating CAPTCHA image (font missing?!)');
* This method returns the CAPTCHA as JPEG
return PEAR ::raiseError ('Error creating CAPTCHA image (font missing?!)');
Documentation generated on Mon, 11 Mar 2019 14:18:44 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.
|