GD::RPPNG - Package for generating human only readable images

- NAME
- DESCRIPTION
- SYNOPSIS
- METHODS
- EXAMPLES
- AUTHOR
- VERSION
- COPYRIGHT
- SEE ALSO

# NAME

GD::RPPNG - Package for generating human only readable images

# DESCRIPTION

GD::RPPNG - Package for generating human-only readable images

The GD::RPPNG (Random Password PNG) module was created to provide an easy access to human-only readable images. This is very usefull to avoid automatic processing of authentication. (ie: subscription to free email accounts).

# SYNOPSIS

        use GD::RPPNG;

        # create a new image
        $myimage = new GD::RPPNG;

        # configure the image
        $myimage->Config (
            Xsize            => 400,
            Ysize            => 75,
            CharSet          => 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789',
            CodeLen          => 8,
            FontMinPT        => 12,
            FontMaxPT        => 28,
            yDivert          => 10,
            Angle            => 45,
            XLinesFactor     => 10,
            YLinesFactor     => 10,
            Transparent      => 0,
            Colors           => 1,
            bgColor          => 'FFFFFF',
            fgColor          => '000000',
            Code             => 'mypasswd',
            DebugCode        => 0,
            );

        # add TrueType(C) fonts
        $myimage->AddFonts (
            '/usr/X11R6/lib/X11/fonts/truetype/arial.ttf',
            '/usr/X11R6/lib/X11/fonts/truetype/courier.ttf',
        );

        # generate the image
        ( $mycode, $mypng ) = $image->GenImage();

# METHODS

$object = new GD::RPPNG
  Creates a new object and sets all default options (see next METHOD for detailed description):

          Xsize         => 400
          Ysize         => 75
          CharSet       => 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'
          CodeLen       => 8
          FontMinPT     => 12
          FontMaxPT     => 28
          yDivert       => 10
          Angle         => 45
          XLinesFactor  => 10
          YLinesFactor  => 10
          Transparent   => 0
          Colors        => 1
          bgColor       => 'FFFFFF'
          fgColor       => '000000'
          Code          => ''
          DebugCode     => 0

$object->`Config()`
  With this method you can override all the default options shown above.

  'Xsize' defines the width of the image in pixels. here's an example:

          $object->Config( Xsize => 400 )

  'Ysize' defines the height of the image in pixels. here's an example:

          $object->Config( Ysize => 75 )

  'CharSet' defines the list of chars which may be used to generate the ``code''. Depending on the fonts you will use, its recommended to skip I,L,0,O and 1 as they might be confusing. here's an example:

          $object->Config( CharSet => 'ABCDEFGHJKMNOPQRSTUVWXYZ23456789%$#@' )

  'CodeLen' defines the number of chars to be used to generate the ``code''. here's an example:

          $object->Config( CodeLen => 8 )

  'FontMinPT' defines the minimal font size to use. here's an example:

          $object->Config( FontMinPT => 12 )

  'FontMaxPT' defines the maximal font size to use. here's an example:

          $object->Config( FontMaxPT => 24 )

  'yDivert' defines, in percent of the image height, the vertical range in which chars may be printed. here's an example:

          $object->Config( yDivert => 10 )

  'Angle' defines, in degree, the angle range in which chars may be rotated. As an example, 90 will allow chars to be rotated from -45 to +45 degrees. here's an example:

          $object->Config( Angle => 45 )

  'XLinesFactor' defines, in percent, the amount of horizontal lines to be draw. As an example, 50 on a 400 pixels wide image will draw about 200 lines. here's an example:

          $object->Config( XLinesFactor => 20 )

  'YLinesFactor' defines, in percent, the amount of vertical lines to be draw. As an example, 50 on a 100 pixels high image will draw about 50 lines. here's an example:

          $object->Config( YLinesFactor => 20 )

  'Transparent' defines if the background has to be transparent or not. here's an example:

          $object->Config( Transparent => 0 )

  'Colors' defines if the image will use random colors or not. here's an example:

          $object->Config( Colors => 1 )

  'bgColor' defines, in RRGGBB (hex) format, the background color to use. here's an example:

          $object->Config( bgColor => 'FFFFFF' )

  'fgColor' defines, in RRGGBB (hex) format, the foreground color to use. here's an example:

          $object->Config( fgColor => '000000' )

  'Code' defines the ``code''. If not set, a random code will be generated using the CharSet and the CodeLen options. If set, CharSet and CodeLen will be ignored. here's an example:

          $object->Config( Code => 'q12we34r' )

  NOTE: You may specify multiple options at the same time here's an example:

          $object->Config(
              Xsize => 400,
              Ysize => 75,
              Colors => 1
         );

  'DebugCode' defines if the ``code'' will be displayed on the top left of the image or not. NOTE: Do only use this for debugging purpose! here's an example:

$object->`AddFonts()`
  With this method you can add TrueType fonts. Those fonts will be randomly used to draw the ``code'' on the image. here's an example:

          $object->AddFonts(
              '/usr/X11R6/lib/X11/fonts/truetype/arial.ttf',
              '/usr/X11R6/lib/X11/fonts/truetype/courier.ttf'
          );

$object->`GenImage()`
  With this method you will generate the image. The method will return the ``code'' and the image in an array. here's an example:

          ($mycode, $myimage) = $object->GenImage();
          print "Content-type: image/png\n\n";
          print $myimage;

# EXAMPLES

Many examples may be found at http://www.spale.com/gd-rppng

# AUTHOR

Pascal Gloor <spale@cpan.org>

The GD::RPPNG module was written by Pascal Gloor.

# VERSION

Version 0.9, released on 11 Dec 2003.

# COPYRIGHT

GD::RPPNG Copyright (C) 2003 Pascal Gloor <spale@cpan.org>

GD Copyright (C) 1995-2000, Lincoln D. Stein.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

# SEE ALSO

the GD::RPPNG manpage