The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

$img = ImagePwd::new (%inp);

%inp hash can contain follow members:

  len      - Count of password string.
  width    - Width of generated image.
  height   - Height of generated image.
  f_max    - Maximum size of font.
  f_min    - Minimum size of font.
  fixed    - If you want to use one color for all chars please set this
             to '1' other else to '0'
  rot      - Maximum(minimum) rotate angle (0 up to 90)
  fonts    - Pointer to array of fonts that will be used for image password.
             (NT users should specify full path to fonts!)
  bgcolor  - Use only if you want to fix used bgcolor for image!!!
  color    - Use only if you want to fix used color for text!!!
  quality  - Quality of new generated image (variate of 0 up to 128)
  password - This member contain 'password' with length 'len'
  cell     - Set to '1' if you want over image to be placed cells,
             drawn with random color.
  

Note: Font sizes variates from 'f_min' up to 'f_max' pixels.

NAME

ImagePwd.pm - Full featured Image password generator for Web

DESCRIPTION

    ImagePwd is written in pure Perl and generate images that can be used against automatic scripts: about registrations, submittions, flood and any multiple undesired actions.

    Prerequirements: - PerlMagick package, often became with ImageMagick (http://www.imagemagick.org/)

    Features: You can automatize many aspects of generated image:

    - Length of password string.
    - Width of generated image.
    - Height of generated image.
    - Maximum size of font.
    - Minimum size of font.
    - You can use fixed color for all password chars.
    - You can rotate chars on random angle (0 up to 90)
    - To use array of fonts for generated image password.
    - To use one fixed bgcolor for image.
    - To use fixed color for text
    - To set quality level (variate of 0 up to 128)
    - To write your custom "password" text
    - To set over image cells, drawn with random color.

SYNOPSIS

use ImagePwd;
$obj = ImagePwd->new(len=>6, height=>60, width=>280, fixed=>1, rot=>10,
                     quality=>128, cell=>1, f_min=>20);
                     
$obj->fonts(['c:/Windows/FONTS/Verdana.TTF','c:/Windows/FONTS/Arial.TTF',
             'c:/Windows/FONTS/comic.TTF','c:/Windows/FONTS/georgiab.TTF',
             'c:/Windows/FONTS/micross.TTF','c:/Windows/FONTS/tahoma.TTF',
            ]);
# $obj->fonts(['kai.ttf']); # And more fonts for Unix/Linux users

$img = $obj->ImagePassword();
$| = 1;
binmode STDOUT;
print "Content-type: image/png\n\n";
print $img->Write('png:-');

OR

<?perl use ImagePwd;

$obj = ImagePwd->new(len=>6, height=>60, width=>280, fixed=>1, rot=>10,
                    quality=>128, cell=>1, f_min=>20);

$obj->fonts(['c:/Windows/FONTS/Verdana.TTF','c:/Windows/FONTS/Arial.TTF',
            'c:/Windows/FONTS/comic.TTF','c:/Windows/FONTS/georgiab.TTF',
            'c:/Windows/FONTS/micross.TTF','c:/Windows/FONTS/tahoma.TTF',
            ]);
# $obj->fonts(['kai.ttf']); # And more fonts for Unix/Linux users

$img = $obj->ImagePassword();

ClearBuffer();
ClearHeader();
flush_print(1);
set_printing_mode('');

Header(type=>'raw',val=>"Content-type: image/png\n\n");
print $img->Write('png:-');

?>

AUTHOR

Julian Lishev - Bulgaria, Sofia, 
e-mail: julian@proscriptum.com, 
www.proscriptum.com