Image-QRCode-Effects
view release on metacpan or search on metacpan
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
name: Image-QRCode-Effects
no_index:
directory:
- inc
- t
requires:
File::Slurp: 9999.19
File::Temp: 0.22
Image::Magick: 6
Imager: 0.94
Imager::QRCode: 0.033
Params::Validate: 1.07
Scalar::Util: 1.27
perl: 5.6.0
resources:
bugtracker: http://github.com/mcartmell/Image-QRCode-Effects/issues
license: http://dev.perl.org/licenses/
repository: http://github.com/mcartmell/Image-QRCode-Effects
version: 0.01
Makefile.PL view on Meta::CPAN
tests 't/*.t';
resources (
license => 'http://dev.perl.org/licenses/',
repository => 'http://github.com/mcartmell/Image-QRCode-Effects',
bugtracker => 'http://github.com/mcartmell/Image-QRCode-Effects/issues',
);
requires (
'File::Slurp' => 9999.19,
'Image::Magick' => 6,
'Imager' => 0.94,
'Imager::QRCode' => 0.033,
'File::Temp' => 0.22,
'Params::Validate' => 1.07,
'Scalar::Util' => 1.27
);
test_requires 'Test::More' => 0;
WriteAll;
lib/Image/QRCode/Effects.pm view on Meta::CPAN
package Image::QRCode::Effects;
use 5.006;
use strict;
use warnings;
our $VERSION = '0.01';
use File::Slurp qw(write_file);
use Image::Magick;
use Imager;
use Imager::QRCode;
use File::Temp qw(tempfile);
use Params::Validate qw(:all);
use Scalar::Util qw(looks_like_number);
my $rx_colour = { regex => qr/^#[a-f\d]+$/i };
my $valid_size = { regex => qr/^\d+x\d+$/i };
my $num = { callbacks => { 'numeric' => sub { looks_like_number(shift) } } };
my $optional_num = { %$num, optional => 1 };
lib/Image/QRCode/Effects.pm view on Meta::CPAN
gradient_colour => { %$rx_colour, optional => 1 },
size => { %$valid_size, default => '600x600' },
wavelength => { %$num, default => 30 },
amplitude => { %$num, default => 1.5 },
corner_sigma => { %$num, default => 2.2 },
corner_threshold => { regex => qr/^\d+%,\d+%$/, default => '42%,58%' },
shadow_colour => { %$rx_colour, default => '#000000' },
gradient_type => { regex => qr/^(normal|radial|plasma)$/, default => 'normal' },
});
my $im = Image::Magick->new;
my $size = $p{size};
my $file = $self->{file};
if (!-f "$file") {
die "Internal error: file $file has not been set";
}
# Resize the image, without smoothing
$im->read($file);
$im->Resize(geometry => $size, filter => 'Point');
lib/Image/QRCode/Effects.pm view on Meta::CPAN
}
}
elsif ($col = $p{colour}) {
$fill = "xc:$col";
}
else {
die "Colour required";
}
# create a blank image to fill
my $white = Image::Magick->new;
$white->Set(size => $size);
$white->ReadImage('xc:white');
# fill with the colour, masked with the barcode
my $filled = Image::Magick->new;
$filled->Set(size => $size);
$filled->ReadImage($fill);
$im->Negate();
$white->Composite(image => $filled, mask => $im, color => 'white');
# put the transparent stencil on top if we've got an inner shadow
if ($inner_shadow) {
$white->Composite(image => $inner_shadow);
}
lib/Image/QRCode/Effects.pm view on Meta::CPAN
=item C<corner_sigma> - Can be changed to adjust the 'roundedness' of the corners when C<round_corners = 1>. Default is 2.2
=item C<corner_threshold> - Can be changed to adjust the 'sharpness' of the corners when C<round_corners = 1>. Default is '42%,58%'.
=back
=head1 SEE ALSO
L<Imager::QRCode>
L<Image::Magick>
=head1 AUTHOR
Mike Cartmell, C<< <mcartmell at cpan.org> >>
=head1 LICENSE AND COPYRIGHT
Copyright (C) 2013 Mike Cartmell
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
use strict;
use warnings;
use Image::QRCode::Effects;
use Image::Magick;
use Test::More;
use Cwd qw(abs_path);
use File::Basename qw(basename dirname);
my $tests = [
{
args => { wave => 1 },
test_file => 'test_wave.jpg',
},
{
my %args = %{ $test->{args} };
my $test_name = basename($test->{test_file});
my $test_file = "$img_dir/$test->{test_file}";
my $image = Image::QRCode::Effects->new(
level => 'H',
plot => "test $test_name",
);
my $tmpfile = File::Temp->new(SUFFIX => '.jpg');
$image->write( %args, outfile => $tmpfile);
close $tmpfile;
my $img1 = Image::Magick->new();
$img1->Read($tmpfile->filename);
my $img2 = Image::Magick->new();
$img2->Read($test_file);
my $difference=$img1->Compare(image=>$img2, metric=>'rmse');
ok($difference->Get('error') < 0.1, $test_name);
}
done_testing();
( run in 0.415 second using v1.01-cache-2.11-cpan-beeb90c9504 )