GD-SecurityImage
view release on metacpan or search on metacpan
GD::SecurityImage->import( use_magick => $config{use_magick} );
$self->{IS_GD} = $GD::SecurityImage::BACKEND eq 'GD';
$self->{cgi} = CGI->new;
$self->{program} = $config{program};
if ( ! $self->{program} ){
# it is possible to get the url as "demo.pl??foo=bar"
my $url = $self->{cgi}->can('self_url') ? $self->{cgi}->self_url
: $self->{cgi}->url;
($self->{program}, my @jp) = split m{[?]}xms, $url;
}
my %options = $self->all_options;
my %styles = $self->all_styles;
my @optz = keys %options;
my @styz = keys %styles;
$self->{rnd_opt} = $options{ $optz[ int rand @optz ] };
$self->{rnd_sty} = $styles{ $styz[ int rand @styz ] };
lib/GD/SecurityImage/GD.pm view on Meta::CPAN
my @char;
my $anglex;
my $total = 0;
my $space = [ $self->ttf_info( 0, 'A' ), 0, q{ } ];
my @randomy;
my $sy = $space->[CHY] || 1;
## no critic (ValuesAndExpressions::ProhibitMagicNumbers)
push @randomy, $_, - $_ foreach $sy*1.2,$sy, $sy/2, $sy/4, $sy/8;
## use critic
foreach (split m{}xms, $key) { # get char parameters
$anglex = $self->random_angle;
$total += $space->[CHX];
push @char, [$self->ttf_info($anglex, $_), $anglex, $_], $space, $space, $space;
}
$total *= 2;
my @config = ($ctext, $self->{font}, $self->{ptsize});
my($x,$y);
foreach my $box (reverse @char) {
$x = $self->{width} / 2 + ($box->[CHX] - $total);
$y = $self->{height} / 2 + $box->[CHY];
lib/GD/SecurityImage/GD.pm view on Meta::CPAN
$self->{image}->stringFT( $ctext, $self->{font}, $self->{ptsize}, $self->{angle}, $x, $y, $key );
return;
}
sub _insert_text_gd_scramble {
my($self, $key, $ctext) = @_;
# without ttf, we can only have 0 and 90 degrees.
my @char;
my @styles = qw(string stringUp);
my $style = $styles[int rand @styles];
foreach (split m{}xms, $key) { # get char parameters
push @char, [ $_, $style ], [ q{ }, 'string' ];
$style = $style eq 'string' ? 'stringUp' : 'string';
}
my $sw = $self->{gd_font}->width;
my $sh = $self->{gd_font}->height;
my($x, $y, $m);
my $total = $sw * @char;
foreach my $c (@char) {
$m = $c->[1];
$x = ($self->{width} - $total) / 2;
lib/GD/SecurityImage/Magick.pm view on Meta::CPAN
);
if ($self->{scramble}) {
my $space = [$info->(q{ }), 0, q{ }]; # get " " parameters
my @randomy;
my $sy = $space->[ASCENDER] || 1;
## no critic (ValuesAndExpressions::ProhibitMagicNumbers)
push @randomy, $_, - $_ foreach $sy/2, $sy/4, $sy/8;
## use critic
my @char;
foreach ( split m{}xms, $key ) {
push @char, [$info->($_), $self->random_angle, $_], $space, $space, $space;
}
my $total = 0;
$total += $_->[WIDTH] foreach @char;
foreach my $magick (@char) {
$total -= $magick->[WIDTH] * 2;
$self->{image}->Annotate(
text => $magick->[CHAR],
x => ($self->{width} - $total - $magick->[WIDTH] ) / 2,
y => (($self->{height} + $magick->[ASCENDER]) / 2) + $randomy[int rand @randomy],
lib/GD/SecurityImage/Magick.pm view on Meta::CPAN
sub setThickness { ## no critic (NamingConventions::Capitalization)
my $self = shift;
my $thickness = shift || return;
$self->{MAGICK}{strokewidth} *= $thickness;
return;
}
sub _tovstr {
my $self = shift;
my $thing = shift || return '0.0.0';
my @j = split m{[.]}xms, $thing;
my $rv = join q{.},
shift(@j) || 0,
shift(@j) || 0,
shift(@j) || 0,
@j ? (@j) : ();
return $rv;
}
sub gdbox_empty { return 0 }
( run in 1.106 second using v1.01-cache-2.11-cpan-71847e10f99 )