Current File : //opt/RZphp72/includes/Image/Barcode/ean8.php |
<?php
/* vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4: */
/**
* Image_Barcode_ean8 class
*
* Renders EAN 8 barcodes
*
* PHP versions 4
*
* LICENSE: This source file is subject to version 3.0 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
*
* @category Image
* @package Image_Barcode
* @author Tobias Frost <tobi@coldtobi.de> ,
* based on EAN13 code by Didier Fournout <didier.fournout@nyc.fr>
* @copyright 2005 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @version CVS: $Id:
* @link http://pear.php.net/package/Image_Barcode
*/
require_once 'Image/Barcode.php';
/**
* Image_Barcode_ean8 class
*
* Package which provides a method to create EAN 13 barcode using GD library.
*
* @category Image
* @package Image_Barcode
* @author Tobias Frost <tobi@coldtobi.de> ,
* based on EAN13 code by Didier Fournout <didier.fournout@nyc.fr>
* @copyright 2005 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @version Release: @package_version@
* @link http://pear.php.net/package/Image_Barcode
*/
class Image_Barcode_ean8 extends Image_Barcode
{
/**
* Barcode type
* @var string
*/
var $_type = 'ean8';
/**
* Barcode height
*
* @var integer
*/
var $_barcodeheight = 50;
/**
* Font use to display text
*
* @var integer
*/
var $_font = 2; // gd internal small font
/**
* Bar width
*
* @var integer
*/
var $_barwidth = 1;
/**
* Number set
* @var array
*/
var $_number_set = array(
'0' => array(
'A' => array(0,0,0,1,1,0,1),
'C' => array(1,1,1,0,0,1,0)
),
'1' => array(
'A' => array(0,0,1,1,0,0,1),
'C' => array(1,1,0,0,1,1,0)
),
'2' => array(
'A' => array(0,0,1,0,0,1,1),
'C' => array(1,1,0,1,1,0,0)
),
'3' => array(
'A' => array(0,1,1,1,1,0,1),
'C' => array(1,0,0,0,0,1,0)
),
'4' => array(
'A' => array(0,1,0,0,0,1,1),
'C' => array(1,0,1,1,1,0,0)
),
'5' => array(
'A' => array(0,1,1,0,0,0,1),
'C' => array(1,0,0,1,1,1,0)
),
'6' => array(
'A' => array(0,1,0,1,1,1,1),
'C' => array(1,0,1,0,0,0,0)
),
'7' => array(
'A' => array(0,1,1,1,0,1,1),
'C' => array(1,0,0,0,1,0,0)
),
'8' => array(
'A' => array(0,1,1,0,1,1,1),
'C' => array(1,0,0,1,0,0,0)
),
'9' => array(
'A' => array(0,0,0,1,0,1,1),
'C' => array(1,1,1,0,1,0,0)
)
);
/**
* Draws a EAN 8 image barcode
*
* @param string $text A text that should be in the image barcode
* @param string $imgtype The image type that will be generated
*
* @return image The corresponding EAN8 image barcode
*
* @access public
*
* @author Tobias Frost tobi@coldtobi.de
* based on the EAN13 code by Didier Fournout <didier.fournout@nyc.fr>
* @todo Check if $text is number and len=8
*
*/
function &draw($text, $imgtype = 'png')
{
// Calculate the barcode width
$barcodewidth = (strlen($text)) * (7 * $this->_barwidth)
+ 3 * $this->_barwidth // left
+ 5 * $this->_barwidth // center
+ 3 * $this->_barwidth // right
;
$barcodelongheight = (int) (imagefontheight($this->_font)/2) + $this->_barcodeheight;
// Create the image
$img = ImageCreate(
$barcodewidth,
$barcodelongheight + imagefontheight($this->_font) + 1
);
// Alocate the black and white colors
$black = ImageColorAllocate($img, 0, 0, 0);
$white = ImageColorAllocate($img, 255, 255, 255);
// Fill image with white color
imagefill($img, 0, 0, $white);
// Initiate x position
$xpos = 0;
// Draws the left guard pattern (bar-space-bar)
// bar
imagefilledrectangle($img, $xpos, 0, $xpos + $this->_barwidth - 1, $barcodelongheight, $black);
$xpos += $this->_barwidth;
// space
$xpos += $this->_barwidth;
// bar
imagefilledrectangle($img, $xpos, 0, $xpos + $this->_barwidth - 1, $barcodelongheight, $black);
$xpos += $this->_barwidth;
for ($idx = 0; $idx < 4; $idx ++) {
$value=substr($text,$idx,1);
imagestring ($img, $this->_font, $xpos+1, $this->_barcodeheight, $value, $black);
foreach ($this->_number_set[$value]['A'] as $bar) {
if ($bar) {
imagefilledrectangle($img, $xpos, 0, $xpos + $this->_barwidth - 1, $this->_barcodeheight, $black);
}
$xpos += $this->_barwidth;
}
}
// Draws the center pattern (space-bar-space-bar-space)
// space
$xpos += $this->_barwidth;
// bar
imagefilledrectangle($img, $xpos, 0, $xpos + $this->_barwidth - 1, $barcodelongheight, $black);
$xpos += $this->_barwidth;
// space
$xpos += $this->_barwidth;
// bar
imagefilledrectangle($img, $xpos, 0, $xpos + $this->_barwidth - 1, $barcodelongheight, $black);
$xpos += $this->_barwidth;
// space
$xpos += $this->_barwidth;
// Draw right $text contents
for ($idx = 4; $idx < 8; $idx ++) {
$value=substr($text,$idx,1);
imagestring ($img, $this->_font, $xpos+1, $this->_barcodeheight, $value, $black);
foreach ($this->_number_set[$value]['C'] as $bar) {
if ($bar) {
imagefilledrectangle($img, $xpos, 0, $xpos + $this->_barwidth - 1, $this->_barcodeheight, $black);
}
$xpos += $this->_barwidth;
}
}
// Draws the right guard pattern (bar-space-bar)
// bar
imagefilledrectangle($img, $xpos, 0, $xpos + $this->_barwidth - 1, $barcodelongheight, $black);
$xpos += $this->_barwidth;
// space
$xpos += $this->_barwidth;
// bar
imagefilledrectangle($img, $xpos, 0, $xpos + $this->_barwidth - 1, $barcodelongheight, $black);
$xpos += $this->_barwidth;
return $img;
} // function create
} // class
?>