PHP は code128 バーコードを生成します
レンダリング:
<?php<br />
<br />
クラス BarCode128 {<br />
const STARTA = 103;<br />
const STARTB = 104;<br />
const STARTC = 105;<br />
const STOP = 106;<br />
Private $unit_width = 1 //単位幅のデフォルトは 1 ピクセル<br />
プライベート $is_set_height = false;<br />
private $width = -1;<br />
private $heith = 35;<br />
プライベート $quiet_zone = 6;<br />
プライベート $font_height = 15;<br />
プライベート $font_type = 4;<br />
プライベート $color =0x000000;<br />
プライベート $bgcolor =0xFFFFFF;<br />
プライベート $image = null;<br />
private $codes = array("212222","222122","222221","121223","121322","131222","122213","122312","132212","221213","221312", "231212"、"112232"、"122132"、"122231"、"113222"、"123122"、"123221"、"223211"、"221132"、"221231"、"213212"、"223112"、"312131 ","311222","321122","321221","312212","322112","322211","212123","212321","232121","111323","131123","131321", "112313"、"132113"、"132311"、"211313"、"231113"、"231311"、"112133"、"112331"、"132131"、"113123"、"113321"、"133121"、"313121 ","211331","231131","213113","213311","213131","311123","311321","331121","312113","312311","332111","314111", "221411"、"431111"、"111224"、"111422"、"121124"、"121421"、"141122"、"141221"、"112214"、"112412"、"122114"、"122411"、"142112 ","142211","241211","221114","413111","241112","134111","111242","121142","121241","114212","124112","124211", "411212"、"421112"、"421211"、"212141"、"214121"、"412121"、"111143"、"111341"、"131141"、"114113"、"114311"、"411113"、"411311 ","113141","114131","311141","411131","211412","211214","211412","2331112");<br />
プライベート $valid_code = -1;<br />
プライベート $type ='B';<br />
Private $start_codes =array('A'=>self::STARTA,'B'=>self::STARTB,'C'=>self::STARTC);<br>
プライベート $code ='';<br>
プライベート $bin_code ='';<br>
プライベート $text ='';<br>
<br>
パブリック関数 __construct($code='',$text='',$type='B')<br>
{<br>
If (in_array($type,array('A','B','C')))<br>
$this->setType($type);<br>
その他<br>
$this->setType('B');<br>
if ($code !=='')<br>
$this->setCode($code);<br>
if ($text !=='')<br>
$this->setText($text);<br>
}<br>
パブリック関数 setUnitWidth($unit_width)<br>
{<br> $this->unit_width = $unit_width;<br>
$this->quiet_zone = $this->unit_width*6;<br>
$this->font_height = $this->>unit_width*15;<br>
if (!$this->is_set_height)<br>
{<br>
$this->heith = $this->unit_width*35;<br>
}<br>
}<br>
パブリック関数 setFontType($font_type)<br>
{<br>
$this->font_type = $font_type;<br>
}<br>
パブリック関数 setBgcolor($bgcoloe)<br>
{<br>
$this->bgcolor = $bgcoloe;<br>
}<br>
パブリック関数 setColor($color)<br>
{<br>
$this->color = $color;<br>
}<br>
パブリック関数 setCode($code)<br>
{<br>
if ($code !='')<br>
{<br>
$this->code= $code;<br>
if ($this->text ==='')<br>
$this->text = $code;<br>
}<br>
}<br>
パブリック関数 setText($text)<br>
{<br>
$this->text = $text;<br>
}<br>
<br>
パブリック関数 setType($type)<br>
{<br>
$this->type = $type;<br>
}<br>
パブリック関数 setHeight($height)<br>
{<br>
$this->height = $height;<br>
$this->is_set_height = true;<br>
}<br>
<br>
プライベート関数 getValueFromChar($ch)<br>
{<br>
$val = ord($ch);<br>
試してみてください<br>
{<br>
if ($this->type =='A')<br>
{<br>
if ($val > 95)<br>
throw new Exception('不正なバーコード文字'.$ch.' for code128A in '.__FILE__.' on line '.__LINE__);<br>
if ($val < 32)<br />
$val += 64;<br />
それ以外<br />
$val -=32;<br />
}<br />
elseif ($this->type =='B')<br />
{<br />
if ($val < 32 || $val > 127)<br /> throw new Exception('不正なバーコード文字'.$ch.' for code128B in '.__FILE__.' on line '.__LINE__);<br />
それ以外<br />
$val -=32;<br />
}<br />
それ以外<br />
{<br />
if (!is_numeric($ch) || (int)$ch <br />
throw new Exception('不正なバーコード文字'.$ch.' for code128C in '.__FILE__.' on line '.__LINE__);<br />
それ以外<br />
{<br />
if (strlen($ch) ==1)<br />
$ch .='0';<br />
$val = (int)($ch);<br />
}<br />
}<br />
}<br />
catch(Exception $ex)<br />
{<br />
errorlog('die',$ex->getMessage());<br />
}<br />
return $val;<br />
}<br />
プライベート関数parseCode()<br />
{<br />
$this->type=='C'?$step=2:$step=1;<br />
$val_sum = $this->start_codes[$this->type];<br />
$this->width = 35;<br />
$this->bin_code = $this->codes[$val_sum];<br />
for($i =0;$i<strlen($this->code);$i+=$step)<br />
{<br />
$this->width +=11;<br />
$ch = substr($this->code,$i,$step);<br />
$val = $this->getValueFromChar($ch);<br />
$val_sum += $val;<br />
$this->bin_code .= $this->codes[$val];<br />
}<br />
$this->width *=$this->unit_width;<br>
$val_sum = $val_sum%103;<br>
$this->valid_code = $val_sum;<br>
$this->bin_code .= $this->codes[$this->valid_code];<br>
$this->bin_code .= $this->codes[self::STOP];<br>
}<br>
パブリック関数 getValidCode()<br>
{<br>
if ($this->valid_code == -1)<br> $this->parseCode();<br>
return $this->valid_code;<br>
}<br>
パブリック関数 getWidth()<br>
{<br>
if ($this->width ==-1)<br>
$this->parseCode();<br>
return $this->width;<br>
}<br>
<br>
パブリック関数 getHeight()<br>
{<br>
if ($this->width ==-1)<br>
$this->parseCode();<br>
return $this->height;<br>
}<br>
<br>
public function createBarCode($image_type ='png',$file_name=null)<br>
{<br>
$this->parseCode();<br>
$this->image = ImageCreate($this->width+2*$this->quiet_zone,$this->heith + $this->font_height);<br>
$this->bgcolor = imagecolorallocate($this->image,$this->bgcolor >gt;>16,($this->bgcolor >gt;>8)&0x00FF,$this->bgcolor & 0xFF);<br>
$this->color = imagecolorallocate($this->image,$this->color >> 16,($this->color >> 8)&0x00FF,$this->color & 0xFF);<br>
ImageFilledRectangle($this->image, 0, 0, $this->width + 2*$this->quiet_zone,$this->heith + $this->font_height, $this->bgcolor) ;<br>
$sx = $this->quiet_zone;<br>
$sy = $this->font_height -1;<br>
$fw = 10; //編號為2または3の字體寬度為10、為4または5の字國寬度為11<br>
if ($this->font_type >3)<br>
{<br>
$sy++;<br>
$fw=11;<br>
}<br>
$ex = 0;<br>
$ey = $this->heith + $this->font_height - 2;<br>
for($i=0;$i<strlen>bin_code);$i++)<br>
{<br>
$ex = $sx + $this->unit_width*(int) $this->bin_code{$i} -1;<br>
if ($i%2==0)<br>
ImageFilledRectangle($this->image, $sx, $sy, $ex,$ey, $this->color);<br>
$sx =$ex + 1;<br>
}<br>
$t_num = strlen($this->text);<br>
$t_x = $this->幅/$t_num;<br>
$t_sx = ($t_x -$fw)/2; //目的は使用文字居中平均分布<br>
for($i=0;$i
{<br>
imagechar($this->image,$this->font_type,6*$this->unit_width +$t_sx +$i*$t_x,0,$this->text{$i},$this- >色);<br>
}<br>
if (!$file_name)<br> {<br>
header("Content-Type: image/".$image_type);<br>
}<br>
スイッチ ($image_type)<br>
{<br>
case 'jpg':<br>
case 'jpeg':<br>
Imagejpeg($this->image,$file_name);<br>
休憩;<br>
ケース 'png':<br>
Imagepng($this->image,$file_name);<br>
休憩;<br>
ケース 'gif':<br>
休憩;<br>
Imagegif($this->image,$file_name);<br>
デフォルト:<br>
Imagepng($this->image,$file_name);<br>
休憩;<br>
}<br>
}<br>
}<br>
<br>
$barcode = 新しい BarCode128('88888888');<br>
$barcode->createBarCode();<br>
?></strlen>
附加一强大的条序生成扩展包
http://www.barcodebakery.com/
">
http://www.barcodebakery.com/
AD:真正免费,領域名+虚机+企业邮箱=0元