我想生成一个二维码,二维码中间有一张图片。
可以用Perl生成二维码里面有图片的二维码吗?我尝试了不同的库,但仍然找不到解决方案。
这是一个清晰的示例,它应该是什么样子,QR 码在中心包含徽标(图片):
我尝试了不同的 Perl 模块,并且无法自定义二维码。
使用
Image::Magick
和 Imager::QRCode
你可以很容易地做到这一点:
use strict;
use warnings;
use Imager::QRCode;
use Image::Magick;
use Carp qw(croak);
my $qrcode = Imager::QRCode->new(
size => 10,
margin => 0,
version => 1,
level => 'H',
casesensitive => 1,
lightcolor => Imager::Color->new( 255, 255, 255 ),
darkcolor => Imager::Color->new( 0, 0, 0 )
);
my $qrcode_img = $qrcode->plot('foo bar baz');
$qrcode_img->write( file => 'qrcode.gif' )
or croak q{Failed to write QRCode: } . $qrcode_img->errstr;
my $magick_qrcode = Image::Magick->new;
$magick_qrcode->Read( filename => 'qrcode.gif' );
my $embedded_image = Image::Magick->new;
$embedded_image->Read( filename => 'embedded_image.png' );
$magick_qrcode->Composite(
image => $embedded_image,
qw(compose StcAtop gravity Center)
);
$magick_qrcode->Write( filename => 'final_qrcode.png' );
您可以调整
Imager::QRCode
构造函数中的设置,使 QRCode 也成为您想要的颜色。
结果: