php - codeigniter captcha helper is not increasing text font size -


this seems duplace question how, not. asking following :

  1. does codeingiter helper have font size increasing feature ? if passed following array setting seems not change.

    'font_size' => 36

2.the font used has following font sizes , still no change captcah size

enter image description here

so matter ?

/* setup config pass create_captcha function */                 $capache_config = array(                     'img_path' => 'captcha/',                     'img_url' => base_url() . 'captcha/',                     'img_width' => '150',                     'font_path' => base_url() . 'captcha/font/captcha4.ttf',                     'img_height' => 40,                     'expiration' => 7200                 );                  /* generate captcha */                 $captcha = create_captcha($capache_config); 

but size can't larger if increased width or height ? thing know ?

enter image description here

codeigniter captcha helper doesn't allow change font size. following replace default create_captcha function , allow change font size. codeigniter version have used 2.2.0. working/tested code.

step 1: create new helper file named my_captcha_helper.php , save under @ root of codeigniter folder in application/helper. content of file:

<?php  if ( ! defined('basepath')) exit('no direct script access allowed'); /**  * codeigniter  *  * open source application development framework php 5.1.6 or newer  *  * @package     codeigniter  * @author      expressionengine dev team  * @copyright   copyright (c) 2008 - 2014, ellislab, inc.  * @license     http://codeigniter.com/user_guide/license.html  * @link        http://codeigniter.com  * @since       version 1.0  * @filesource  */  // ------------------------------------------------------------------------  /**  * codeigniter captcha helper  *  * @package     codeigniter  * @subpackage  helpers  * @category    helpers  * @author      expressionengine dev team  * @link        http://codeigniter.com/user_guide/helpers/xml_helper.html  */  // ------------------------------------------------------------------------  /**  * create captcha  *  * @access  public  * @param   array   array of data captcha  * @param   string  path create image in  * @param   string  url captcha image folder  * @param   string  server path font  * @return  string  */ if ( ! function_exists('create_captcha')) {     function create_captcha($data = '', $img_path = '', $img_url = '', $font_path = '')     {         $defaults = array('word' => '', 'img_path' => '', 'img_url' => '', 'img_width' => '150', 'img_height' => '30', 'font_path' => '', 'expiration' => 7200, 'font_size' => 5);          foreach ($defaults $key => $val)         {             if ( ! is_array($data))             {                 if ( ! isset($$key) or $$key == '')                 {                     $$key = $val;                 }             }             else             {                 $$key = ( ! isset($data[$key])) ? $val : $data[$key];             }         }          if ($img_path == '' or $img_url == '')         {             return false;         }          if ( ! @is_dir($img_path))         {             return false;         }          if ( ! is_writable($img_path))         {             return false;         }          if ( ! extension_loaded('gd'))         {             return false;         }          // -----------------------------------         // remove old images         // -----------------------------------          list($usec, $sec) = explode(" ", microtime());         $now = ((float)$usec + (float)$sec);          $current_dir = @opendir($img_path);          while ($filename = @readdir($current_dir))         {             if ($filename != "." , $filename != ".." , $filename != "index.html")             {                 $name = str_replace(".jpg", "", $filename);                  if (($name + $expiration) < $now)                 {                     @unlink($img_path.$filename);                 }             }         }          @closedir($current_dir);          // -----------------------------------         // have "word" yet?         // -----------------------------------         if ($word == '')        {             $pool = '0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz';              $str = '';             ($i = 0; $i < 8; $i++)             {                 $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);             }              $word = $str;        }          // -----------------------------------         // determine angle , position         // -----------------------------------          $length = strlen($word);         $angle  = ($length >= 6) ? rand(-($length-6), ($length-6)) : 0;         $x_axis = rand(6, (360/$length)-16);         $y_axis = ($angle >= 0 ) ? rand($img_height, $img_width) : rand(6, $img_height);          // -----------------------------------         // create image         // -----------------------------------          // php.net recommends imagecreatetruecolor(), isn't available         if (function_exists('imagecreatetruecolor'))         {             $im = imagecreatetruecolor($img_width, $img_height);         }         else         {             $im = imagecreate($img_width, $img_height);         }          // -----------------------------------         //  assign colors         // -----------------------------------          $bg_color       = imagecolorallocate ($im, 255, 255, 255);         $border_color   = imagecolorallocate ($im, 153, 102, 102);         $text_color     = imagecolorallocate ($im, 204, 153, 153);         $grid_color     = imagecolorallocate($im, 255, 182, 182);         $shadow_color   = imagecolorallocate($im, 255, 240, 240);          // -----------------------------------         //  create rectangle         // -----------------------------------          imagefilledrectangle($im, 0, 0, $img_width, $img_height, $bg_color);          // -----------------------------------         //  create spiral pattern         // -----------------------------------          $theta      = 1;         $thetac     = 7;         $radius     = 16;         $circles    = 20;         $points     = 32;          ($i = 0; $i < ($circles * $points) - 1; $i++)         {             $theta = $theta + $thetac;             $rad = $radius * ($i / $points );             $x = ($rad * cos($theta)) + $x_axis;             $y = ($rad * sin($theta)) + $y_axis;             $theta = $theta + $thetac;             $rad1 = $radius * (($i + 1) / $points);             $x1 = ($rad1 * cos($theta)) + $x_axis;             $y1 = ($rad1 * sin($theta )) + $y_axis;             imageline($im, $x, $y, $x1, $y1, $grid_color);             $theta = $theta - $thetac;         }          // -----------------------------------         //  write text         // -----------------------------------          $use_font = ($font_path != '' , file_exists($font_path) , function_exists('imagettftext')) ? true : false;          if ($use_font == false)         {             $font_size = $font_size != 5 ? $font_size : 5;             $x = rand(0, $img_width/($length/3));             $y = 0;         }         else         {             $font_size = $font_size != 5 ? $font_size : 16;             $x = rand(0, $img_width/($length/1.5));             $y = $font_size+2;         }          ($i = 0; $i < strlen($word); $i++)         {             if ($use_font == false)             {                 $y = rand(0 , $img_height/2);                 imagestring($im, $font_size, $x, $y, substr($word, $i, 1), $text_color);                 $x += ($font_size*2);             }             else             {                 $y = rand($img_height/2, $img_height-3);                 imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_path, substr($word, $i, 1));                 $x += $font_size;             }         }           // -----------------------------------         //  create border         // -----------------------------------          imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);          // -----------------------------------         //  generate image         // -----------------------------------          $img_name = $now.'.jpg';          imagejpeg($im, $img_path.$img_name);          $img = "<img src=\"$img_url$img_name\" width=\"$img_width\" height=\"$img_height\" style=\"border:0;\" alt=\" \" />";          imagedestroy($im);          return array('word' => $word, 'time' => $now, 'image' => $img);     } }  // ------------------------------------------------------------------------  /* end of file captcha_helper.php */ /* location: ./system/heleprs/captcha_helper.php */ 

i have changed:

this

$defaults = array('word' => '', 'img_path' => '', 'img_url' => '', 'img_width' => '150', 'img_height' => '30', 'font_path' => '', 'expiration' => 7200); 

into this

$defaults = array('word' => '', 'img_path' => '', 'img_url' => '', 'img_width' => '150', 'img_height' => '30', 'font_path' => '', 'expiration' => 7200, 'font_size' => 5); 

and this

if ($use_font == false) {     $font_size = 5;     $x = rand(0, $img_width/($length/3));     $y = 0; } else {     $font_size = 16;     $x = rand(0, $img_width/($length/1.5));     $y = $font_size+2; } 

into this

if ($use_font == false) {     $font_size = $font_size != 5 ? $font_size : 5;     $x = rand(0, $img_width/($length/3));     $y = 0; } else {     $font_size = $font_size != 5 ? $font_size : 16;     $x = rand(0, $img_width/($length/1.5));     $y = $font_size+2; } 

step 2: create folder named captcha @ root of codeigniter folder (you might have it) , give permissions 755 under apache current user/group.

step 3: save .ttf custom fonts under captcha/fonts.

step 4: controller code:

$this->load->helper('captcha');  $capache_config = array(     'img_path' => 'captcha/',     'img_url' => base_url() . 'captcha/',     'img_width' => 190,     'img_height' => 60,     'font_size' => 20,     'font_path' => fcpath. 'captcha/font/verdana.ttf',     'expiration' => 7200 );  /* generate captcha */ $captcha = create_captcha($capache_config);  if ($captcha !== false) {     echo $captcha['image']; } else {     die('no captcha created'); } 

step 5: example output:

captcha file


Comments