| GD-Barcode-Image documentation | Contained in the GD-Barcode-Image distribution. |
GD::Barcode::Image - Create Image::Magick object for a barcode
use GD::Barcode::Image;
my $oGdBarIm = GD::Barcode::Image->new( $type, $text, \%rhPrm );
die "** Error: Barcode $type failed for $text: ${GD::Barcode::errStr},"
unless ($oGdBarIm);
my $oGdIm = $oGdBarIm->plot_imagick( Height => I<pixels>, NoText => I<0 | 1>] );
die "** Error: Image Conversion Failed: ${GD::Barcode::errStr},"
unless ($oGdBarIm);
This module adds minor extensions in functionality to the GD::Barcode module. See the documentation for GD::Barcode and all its barcode symbology types for additional information on the use of this module.
$oGdBarIm = GD::Barcode::Image->new($sType, $sTxt, \%rhPrm);
Constructor. Creates a GD::Barcode::Image object for text $sTxt, for barcode symbology type $sType. Additional parameters can be provided for QRcode type - see GD::Barcode::QRcode module in the GD::Barcode package.
$oGdIm = $oGdBarIm->plot_imagick([Height => $iHeight, NoText => 0 | 1]);
creates Image::Magick object for the barcode object. $iHeight is height of the image. If NoText is 1, the image has no text image of $sTxt. Height and NoText parameters will not apply to the QRcode barcode type.
$oGd = $oGdBarIm->plot_gd([Height => $iHeight, NoText => 0 | 1]);
Same as plot_imagick() except that a GD image object is returned.
has error message. This is same error mechanism as in the GD::Barcode module.
This module also includes the command-line script barcodegen that can be used to create barcode images in various formats: GIF, JPEG, PNG, EPS, PDF.
Avinash Chopde <avinash@aczoom.com> http://www.aczoom.com/
Copyright (C) 2007 Avinash Chopde <avinash@aczoom.com> www.aczoom.com
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
barcodegen
GD::Barcode
| GD-Barcode-Image documentation | Contained in the GD-Barcode-Image distribution. |
package GD::Barcode::Image; use strict; use Image::Magick; use GD::Barcode; require Exporter; use vars qw($VERSION @ISA $AUTOLOAD); @ISA = qw(Exporter); # HAS-A GD::Barcode:<Symbology>, no IS-A $VERSION = 1.03; #------------------------------------------------------------------------------ # GD::Barcode::Image extends GD::Barcode functionality. # GD/Barcode.pm is a package with a single factory-like method named new() # new() itself creates objects of a specific Symbology - Barcode Type, # which are derived classes from GD::Barcode # There are other functions in GD/Barcode.pm such as dumpCode, and even # plot(), but these are not object methods, and since there is never any # object created of class GD::Barcode, all are private functions. # # GD::Barcode::Image follows the implementation of GD::Barcode - which is # easiest done by using a member object of GD::Barcode::<Symbology> type, # and implementing plot_imagick and plot_gd functions. # It would be possible to use AUTOLOAD and proxy all other methods of # GD::Barcode::<Symbology> classes, but unless someone points out the need for # that, leaving it out for now (see example after END in this file) # And if absolutey needed: callers can look at the GD::Barcode::<Symbology> # object in this object hash: $oThis->{gd_barcode} #------------------------------------------------------------------------------ # If these functions need to be merged into GD::Barcode, all that is to # needed from this file are the two functions: plot_imagick and plot_gd - # they will work with very minor modifications. The command-line script # barcodegen should also be carried into GD::Barcode, if this module # becomes obsolete. #------------------------------------------------------------------------------ # new() - create an object of this class # [not a factory method - unlike GD::Barcode] #------------------------------------------------------------------------------ sub new($$$;$) { my $sClass = shift; my ($sType) = @_; # special check: since Image.pm resides in GD/Barcode, there is # the danger that the GD::Barcode->new() function will load/init # this module as a Barcode Symbology. To prevent this, check for type. if ( grep( /^$sType$/i, 'Image' ) ) { $GD::Barcode::errStr = 'Error in new() - Invalid Barcode Type: "Image"'; return undef; } my $oThis = {}; bless $oThis, $sClass; my $gdbc = GD::Barcode->new(@_); $oThis->{gd_barcode} = $gdbc; return $gdbc ? $oThis : undef; } #------------------------------------------------------------------------------ # init (for GD::Barcode::Image) # special check: since Image.pm resides in GD/Barcode, there is # the danger that the GD::Barcode->new() function will load/init this # module as a Barcode Symbology, so check for type #------------------------------------------------------------------------------ sub init() { return 'Error in init() - Invalid Barcode Type: "Image"'; } #------------------------------------------------------------------------------ # plot_imagick: Convert to Image::Magick Object (for GD::Barcode) # Requires both the GD and Image::Magick modules. # signature is similar to GD::Barcode::QRcode->plot() #------------------------------------------------------------------------------ sub plot_imagick($%) { my ( $oThis, %hParam ) = @_; #Create Image my $imNew = undef; eval { require Image::Magick; my ( $gdNew, $png ) = ( undef, undef ); $gdNew = $oThis->{gd_barcode}->plot(%hParam); if ($gdNew) { $png = $gdNew->png(); $imNew = Image::Magick->new(); $GD::Barcode::errStr = $imNew->BlobToImage($png); $imNew = undef if ($GD::Barcode::errStr); # on error, free imagick object } }; return $imNew; } #------------------------------------------------------------------------------ # plot_gd: Convert to GD::Image Object (for GD::Barcode) # plot_gd created to follow name pattern of "plot_imagick" - plot_<what> # Requires the GD module. #------------------------------------------------------------------------------ sub plot_gd($%) { my ( $oThis, %hParam ) = @_; return $oThis->{gd_barcode}->plot(%hParam); } #------------------------------------------------------------------------------ 1; __END__ #------------------------------------------------------------------------------ # proxy methods to the GD::Barcode::<Symbology> object # functions like barcode(), Text() proxied sub AUTOLOAD() { my $oThis = shift; my $gdbc = $oThis->{gd_barcode}; my $method = $AUTOLOAD; $method =~ s/.*:://; $method = $gdbc->can($method); return $method ? $gdbc->$method(@_) : undef; } #------------------------------------------------------------------------------