summaryrefslogtreecommitdiffstats
path: root/perl/examples
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-03-09 00:06:44 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-03-09 00:06:44 +0000
commit44cf8ec67278bd1ab6c7f83a9993f7a5686a9541 (patch)
tree5eec4b0d1a3f163d279c3c27c03324ba49fa235a /perl/examples
parentInitial commit. (diff)
downloadzbar-44cf8ec67278bd1ab6c7f83a9993f7a5686a9541.tar.xz
zbar-44cf8ec67278bd1ab6c7f83a9993f7a5686a9541.zip
Adding upstream version 0.23.93.upstream/0.23.93upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'perl/examples')
-rwxr-xr-xperl/examples/paginate.pl71
-rwxr-xr-xperl/examples/processor.pl35
-rwxr-xr-xperl/examples/read_one.pl29
-rwxr-xr-xperl/examples/scan_image.pl37
4 files changed, 172 insertions, 0 deletions
diff --git a/perl/examples/paginate.pl b/perl/examples/paginate.pl
new file mode 100755
index 0000000..68ffe50
--- /dev/null
+++ b/perl/examples/paginate.pl
@@ -0,0 +1,71 @@
+#!/usr/bin/perl
+#------------------------------------------------------------------------
+# Copyright 2009 (c) Jeff Brown <spadix@users.sourceforge.net>
+#
+# This file is part of the ZBar Bar Code Reader.
+#
+# The ZBar Bar Code Reader is free software; you can redistribute it
+# and/or modify it under the terms of the GNU Lesser Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# The ZBar Bar Code Reader is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser Public License for more details.
+#
+# You should have received a copy of the GNU Lesser Public License
+# along with the ZBar Bar Code Reader; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA
+#
+# http://sourceforge.net/projects/zbar
+#------------------------------------------------------------------------
+use warnings;
+use strict;
+
+use Barcode::ZBar;
+use Image::Magick;
+
+warn("no input files specified?\n") if(!@ARGV);
+
+# running output document
+my $out = undef;
+
+# barcode scanner
+my $scanner = Barcode::ZBar::ImageScanner->new();
+
+foreach my $file (@ARGV) {
+ print "scanning from \"$file\"\n";
+ my $imseq = Image::Magick->new();
+ my $err = $imseq->Read($file);
+ warn($err) if($err);
+
+ foreach my $page (@$imseq) {
+ # convert ImageMagick page to ZBar image
+ my $zimg = Barcode::ZBar::Image->new();
+ $zimg->set_format('Y800');
+ $zimg->set_size($page->Get(qw(columns rows)));
+ $zimg->set_data($page->Clone()->ImageToBlob(magick => 'GRAY', depth => 8));
+
+ # scan for barcodes
+ if($scanner->scan_image($zimg)) {
+ # write out previous document
+ $out->write() if($out);
+
+ # use first symbol found to name next image (FIXME sanitize)
+ my $data = ($zimg->get_symbols())[0]->get_data();
+ my $idx = $page->Get('scene') + 1;
+ print "splitting $data from page $idx\n";
+
+ # create new output document
+ $out = Image::Magick->new(filename => $data);
+ }
+
+ # append this page to current output
+ push(@$out, $page) if($out);
+ }
+
+ # write out final document
+ $out->write() if($out);
+}
diff --git a/perl/examples/processor.pl b/perl/examples/processor.pl
new file mode 100755
index 0000000..d2d1e91
--- /dev/null
+++ b/perl/examples/processor.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/env perl
+use warnings;
+use strict;
+require Barcode::ZBar;
+
+# create a Processor
+my $proc = Barcode::ZBar::Processor->new();
+
+# configure the Processor
+$proc->parse_config("enable");
+
+# initialize the Processor
+$proc->init($ARGV[0] || '/dev/video0');
+
+# setup a callback
+sub my_handler {
+ my ($proc, $image, $closure) = @_;
+
+ # extract results
+ foreach my $symbol ($proc->get_results()) {
+ # do something useful with results
+ print('decoded ' . $symbol->get_type() .
+ ' symbol "' . $symbol->get_data() . "\"\n");
+ }
+}
+$proc->set_data_handler(\&my_handler);
+
+# enable the preview window
+$proc->set_visible();
+
+# initiate scanning
+$proc->set_active();
+
+# keep scanning until user provides key/mouse input
+$proc->user_wait();
diff --git a/perl/examples/read_one.pl b/perl/examples/read_one.pl
new file mode 100755
index 0000000..d64860c
--- /dev/null
+++ b/perl/examples/read_one.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+use warnings;
+use strict;
+require Barcode::ZBar;
+
+# create a Processor
+my $proc = Barcode::ZBar::Processor->new();
+
+# configure the Processor
+$proc->parse_config("enable");
+
+# initialize the Processor
+$proc->init($ARGV[0] || '/dev/video0');
+
+# enable the preview window
+$proc->set_visible();
+
+# read at least one barcode (or until window closed)
+$proc->process_one();
+
+# hide the preview window
+$proc->set_visible(0);
+
+# extract results
+foreach my $symbol ($proc->get_results()) {
+ # do something useful with results
+ print('decoded ' . $symbol->get_type() .
+ ' symbol "' . $symbol->get_data() . "\"\n");
+}
diff --git a/perl/examples/scan_image.pl b/perl/examples/scan_image.pl
new file mode 100755
index 0000000..39d460e
--- /dev/null
+++ b/perl/examples/scan_image.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+require Image::Magick;
+require Barcode::ZBar;
+
+$ARGV[0] || die;
+
+# create a reader
+my $scanner = Barcode::ZBar::ImageScanner->new();
+
+# configure the reader
+$scanner->parse_config("enable");
+
+# obtain image data
+my $magick = Image::Magick->new();
+$magick->Read($ARGV[0]) && die;
+my $raw = $magick->ImageToBlob(magick => 'GRAY', depth => 8);
+
+# wrap image data
+my $image = Barcode::ZBar::Image->new();
+$image->set_format('Y800');
+$image->set_size($magick->Get(qw(columns rows)));
+$image->set_data($raw);
+
+# scan the image for barcodes
+my $n = $scanner->scan_image($image);
+
+# extract results
+foreach my $symbol ($image->get_symbols()) {
+ # do something useful with results
+ print('decoded ' . $symbol->get_type() .
+ ' symbol "' . $symbol->get_data() . "\"\n");
+}
+
+# clean up
+undef($image);