Perl programming
   Perl scripts

ImageCode Perl Module

ImageCode module Version: 1.1  


ImageCode - Perl module for providing Turing test in online form proccessing.


use ImageCode;
# create a new ImageCode object
my $imagecode = ImageCode->new();
# generate encrypted password
my ($icode,$hcode)=$imagecode -> generatepass();
# create form (see

# You form code here

# parse form data and get $hcode and $vcode variables
# check for a valid submitted data
my $status = $imagecode -> checkpass($hcode,$vcode);

# variable $status can accept values :
# 1 - Passed
# 2 - Code was expired
# 3 - Invalid code
# that all !


Allows you to protect online forms from abuse by carrying out on-the-fly Turing test (read more).
Does not require additional applications, including databases, sessions, folders with pictures and fonts etc.
Easily adaptable application allows you to change parameters of the picture such as the size, font, colors, degree of distortion, quantity of symbols, etc. quickly.



$imagecode = ImageCode->new();

This creates a new ImageCode object. Optionally, you can pass in a hash with configuration information. See the method descriptions for more detail on what they mean.

my $imagecode = ImageCode->new(
                               passlength =>8, 
                               expires =>1, 
                               chars => [0..9] 

($icode,$hcode)=$imagecode -> generatepass();

Generate encrypted data for hidden field ($hcode) and for image script ($icode).

$status = $imagecode -> checkpass($hcode,$vcode);

Checks submitted data.
Variable $vcode is the submitted letter combination guess from the user.
For description $hcode see above.

Variable $status can accept values :
1 - Passed
2 - Code was expired
3 - Invalid code


$imagecode -> chars(@array);

Sets the array of symbols or words available for picture generation.
Default array contains digits, lowercase and capital letters from a to z.

Examples :

$imagecode -> chars([0..9]); - use only digits.
$imagecode -> chars(['word','word1','word2']); use word sequence word, word1, word2.

$imagecode -> passlength($int);

Sets password length in symbols or words.
Can accept integer values from 1 to 9.
Default value is 5.

$imagecode -> expires($int);

Sets expiration period in minutes.
Default expiration period value is 30 minutes.

$imagecode -> encryptkey($anyword);

Sets the encryption/decryption key.
It is applied to increase security at use module for protection several online forms.
Do not forget to change this key in the module used by default.


$imagecode -> font('Generic.ttf');

Sets the font.
REMEMBER:Be sure what font file exist in the same folder.
Default font is ARIALNB.ttf.

$imagecode -> fontsize($int);

Sets the font size.
Default is 30.

$imagecode -> fontcolors(@array);

Sets the array of font colors used in picture generation.
Default font color is black.

Examples :

$imagecode -> fontcolors([qw{blue blueviolet brown olivedrab mediumorchid lightseagreen burlywood}]);
$imagecode -> fontcolors(['#800000','#008000', '#000080']);

$imagecode -> bgcolors(@array);

Sets the array of background colors available for picture generation.
Default background color is white.

$imagecode -> gridcolor($string);

Sets the grid color.
Default grid color is gray.

$imagecode -> addnoise($boolean);

Adds noise.
Can accept values 0 or 1.
Set 1 if you want to add noice in to you picture (CAPTCHA).
Default value is 0 (no noise).

$imagecode -> scatter($double);

Sets the range of scatter of symbols in picture.
Can accept values from  0 to 1.
Zerro means no scatter.
Default value is 0.5.


Image::Magick Perl module:


The Captcha project:

Online documentation:


Vadim N. Suvorov, <>


Copyright (c) 2004, ProgLand, Inc.

Copyright (c) 2003 Vadim N. Suvorov

2004 Copyright