diff options
author | dakkar <dakkar@thenautilus.net> | 2024-02-11 13:10:21 +0000 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2024-02-11 13:10:21 +0000 |
commit | 53ac6e1cd7a72b44ca97171b78172870b693ddec (patch) | |
tree | 59e2c9595bc338f2f3abb912319361809fd754ff /bin | |
parent | better zoom wrapper (diff) | |
download | misc-scripts-53ac6e1cd7a72b44ca97171b78172870b693ddec.tar.gz misc-scripts-53ac6e1cd7a72b44ca97171b78172870b693ddec.tar.bz2 misc-scripts-53ac6e1cd7a72b44ca97171b78172870b693ddec.zip |
qr-code
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/qr-code | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/bin/qr-code b/bin/qr-code new file mode 100755 index 0000000..b614a6a --- /dev/null +++ b/bin/qr-code @@ -0,0 +1,58 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Getopt::Long; + +my $data=''; +my $level='L'; +my $format='png'; +my $light='255:255:255'; +my $dark='0:0:0'; +my $size=10; + +my $res=GetOptions('data|d=s' => \$data, + 'level|l=s' => \$level, + 'format|f=s' => \$format, + 'size|s=i' => \$size, + 'light=s' => \$light, + 'dark=s' => \$dark, +); + +{ +$level=uc($level); +if ($level !~ /\A[MLQH]\z/) { + $level='L'; +} +} + +$data = join(' ',@ARGV) unless $data; + +if ($format eq 'txt') { + require Text::QRCode; + + my $qr=Text::QRCode->new( + level=>$level, + mode=>'8-bit', + ); + + my $arr=$qr->plot($data); + + print join "\n", map { join '', @$_ } @$arr; +} else { + require Imager::QRCode; + my $qr=Imager::QRCode->new( + size=>$size, + margin=>3, + level=>$level, + mode=>'8-bit', + lightcolor => Imager::Color->new(split ':',$light), + darkcolor => Imager::Color->new(split ':',$dark), + ); + + my $img=$qr->plot($data); + my $pid = open my $display, '|-', 'display' + or die "Can't start `display`: $!"; + $img->write(type=>$format, fh=>$display); + close $display; + waitpid $pid,0; +} |