summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-02-11 13:10:21 +0000
committerdakkar <dakkar@thenautilus.net>2024-02-11 13:10:21 +0000
commit53ac6e1cd7a72b44ca97171b78172870b693ddec (patch)
tree59e2c9595bc338f2f3abb912319361809fd754ff
parentbetter zoom wrapper (diff)
downloadmisc-scripts-master.tar.gz
misc-scripts-master.tar.bz2
misc-scripts-master.zip
qr-codeHEADmaster
-rwxr-xr-xbin/qr-code58
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;
+}