confused_elf has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I've been having problems with Catalyst::Plugin::Captcha, I've read the manual over and over again but can't seem to get it working.

It does produce an image to my registration page, but the image is all black. I've been digging through the internet looking for some documentations and everything but there isn't any.

Do you know what might cause this?. below is my configuration, captcha method and html file.
__PACKAGE__->config->{captcha} = { session_name => 'captcha_string', new => { width => 80, height => 30, lines => 1, gd_font => 'giant', }, create => [qw/normal rect/], particle => [100], out => {force => 'jpeg'} };
this is in Root.pm.
sub captcha : Local { my ($self, $c) = @_; $c->create_captcha(); }
I called it like this in my html file.
<img src="/captcha">
It always produces a black image, I'm confused on what causes this.

Thank you for the help in advance, I appreciate it.

-confused elf

Replies are listed 'Best First'.
Re: Catalyst::Plugin::Captcha questions
by Anonymous Monk on Jul 12, 2008 at 08:17 UTC
    Q: Does GD::SecurityImage pass test suite?
    Q: Does GD::SecurityImage demo work?

    You should know to use CODE tags by now.

      Hi, Thanks for the reply, I ran test on the GD::SecurityImage and you're right, I was missing Image::Magick and when I ran the demo.pl, I was missing 2 modules, which was Random::String and Apache::Session::MySQL.

      After those two were installed, I ran the demo.pl, following it's instruction and it produces an html which I then view in a browser. however, It still unable to produce the captcha image, displaying instead, it's alt text

      I checked the mysql table and it seems that it is correct. Is there something else that I might miss?. Thank you so much for the help.
        "After those two were installed...". Just to be sure, you meant "After those two and Image::Magick were installed...", right?

        Does a simple GD program like the one at the top of the perlpod documentation of GD work? I.e. that one:

        use GD; # create a new image $im = new GD::Image(100,100); # allocate some colors $white = $im->colorAllocate(255,255,255); $black = $im->colorAllocate(0,0,0); $red = $im->colorAllocate(255,0,0); $blue = $im->colorAllocate(0,0,255); # make the background transparent and interlaced $im->transparent($white); $im->interlaced('true'); # Put a black frame around the picture $im->rectangle(0,0,99,99,$black); # Draw a blue oval $im->arc(50,50,95,75,0,360,$blue); # And fill it with red $im->fill(50,50,$red); # make sure we are writing to a binary stream binmode STDOUT; # Convert the image to PNG and print it on standard output print $im->jpeg;
        Name it gdtest.pl and test that with
        gdtest.pl > test.jpg xzgv test.jpg
        Use any picture-viewer or a browser to view the jpeg if you don't have or can't use xzgv,
Re: Catalyst::Plugin::Captcha questions
by Burak (Chaplain) on Jul 18, 2008 at 08:13 UTC
    Be sure to have the latest version of GD::SecurityImage (v1.66) and have a healthy libgd (not GD.pm, the C library itself). Also, if you have Image::Magick, you can use it to see if the problem is related to GD. However, you need to pass a valid ttf font parameter for Image::Magick. it'll be something like:
    use GD::SecurityImage use_magick => 1; __PACKAGE__->config->{captcha} = { session_name => 'captcha_string', new => { width => 120, height => 50, lines => 1, font => "/absolute/path/to/your.ttf", }, create => qw/ttf rect/, particle => 100, out => {force => 'jpeg'} };