1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 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);
|