php生成code128条形码
Jun 20, 2016 am 08:42 AMphp生成code128条形码
效果图:
<?php <br />
<br>
class BarCode128 {<br>
const STARTA = 103;<br>
const STARTB = 104;<br>
const STARTC = 105;<br>
const STOP = 106;<br>
private $unit_width = 1; //单位宽度 缺省1个象素<br>
private $is_set_height = false;<br>
private $width = -1;<br>
private $heith = 35;<br>
private $quiet_zone = 6;<br>
private $font_height = 15;<br>
private $font_type = 4;<br>
private $color =0x000000;<br>
private $bgcolor =0xFFFFFF;<br>
private $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>
private $valid_code = -1;<br>
private $type ='B';<br>
private $start_codes =array('A'=>self::STARTA,'B'=>self::STARTB,'C'=>self::STARTC);<br>
private $code ='';<br>
private $bin_code ='';<br>
private $text ='';<br>
<br>
public function __construct($code='',$text='',$type='B')<br>
{<br>
if (in_array($type,array('A','B','C')))<br>
$this->setType($type);<br>
else<br>
$this->setType('B');<br>
if ($code !=='')<br>
$this->setCode($code);<br>
if ($text !=='')<br>
$this->setText($text);<br>
}<br>
public function 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>
public function setFontType($font_type)<br>
{<br>
$this->font_type = $font_type;<br>
}<br>
public function setBgcolor($bgcoloe)<br>
{<br>
$this->bgcolor = $bgcoloe;<br>
}<br>
public function setColor($color)<br>
{<br>
$this->color = $color;<br>
}<br>
public function setCode($code)<br>
{<br>
if ($code !='')<br>
{<br>
$this->code= $code;<br>
if ($this->text ==='')<br>
$this->text = $code;<br>
}<br>
}<br>
public function setText($text)<br>
{<br>
$this->text = $text;<br>
}<br>
<br>
public function setType($type)<br>
{<br>
$this->type = $type;<br>
}<br>
public function setHeight($height)<br>
{<br>
$this->height = $height;<br>
$this->is_set_height = true;<br>
}<br>
<br>
private function getValueFromChar($ch)<br>
{<br>
$val = ord($ch);<br>
try<br>
{<br>
if ($this->type =='A')<br>
{<br>
if ($val > 95)<br>
throw new Exception(' illegal barcode character '.$ch.' for code128A in '.__FILE__.' on line '.__LINE__);<br>
if ($val
$val += 64;<br>
else<br>
$val -=32;<br>
}<br>
elseif ($this->type =='B')<br>
{<br>
if ($val 127)<br>
throw new Exception(' illegal barcode character '.$ch.' for code128B in '.__FILE__.' on line '.__LINE__);<br>
else<br>
$val -=32;<br>
}<br>
else<br>
{<br>
if (!is_numeric($ch) || (int)$ch 99)<br>
throw new Exception(' illegal barcode character '.$ch.' for code128C in '.__FILE__.' on line '.__LINE__);<br>
else<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>
private function 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>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>
public function getValidCode()<br>
{<br>
if ($this->valid_code == -1)<br>
$this->parseCode();<br>
return $this->valid_code;<br>
}<br>
public function getWidth()<br>
{<br>
if ($this->width ==-1)<br>
$this->parseCode();<br>
return $this->width;<br>
}<br>
<br>
public function 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 >> 16,($this->bgcolor >> 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->width/$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->color);<br>
}<br>
if (!$file_name)<br>
{<br>
header("Content-Type: image/".$image_type);<br>
}<br>
switch ($image_type)<br>
{<br>
case 'jpg':<br>
case 'jpeg':<br>
Imagejpeg($this->image,$file_name);<br>
break;<br>
case 'png':<br>
Imagepng($this->image,$file_name);<br>
break;<br>
case 'gif':<br>
break;<br>
Imagegif($this->image,$file_name);<br>
default:<br>
Imagepng($this->image,$file_name);<br>
break;<br>
}<br>
}<br>
}<br>
<br>
$barcode = new BarCode128('88888888');<br>
$barcode->createBarCode();<br>
?></strlen></strlen>
附加一个强大的条码生成扩展包
http://www.barcodebakery.com/
">
http://www.barcodebakery.com/
AD:真正免费,域名+虚机+企业邮箱=0元

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ketahui tentang contoh kod pengenalan untuk pengaturcaraan Python

Pembolehubah PHP dalam tindakan: 10 contoh penggunaan sebenar

Cara menggunakan PHP untuk menulis kod fungsi pengurusan inventori dalam sistem pengurusan inventori

Daripada pemula hingga mahir: Pelaksanaan kod struktur data yang biasa digunakan dalam bahasa Go

Java melaksanakan kod isihan gelembung mudah

Contoh pengaturcaraan bahasa Go: contoh kod dalam pembangunan web

Panduan Sambungan Pengkomputeran Tepi Awan Huawei: Contoh kod Java untuk melaksanakan antara muka dengan cepat

Panduan dan Contoh: Belajar untuk melaksanakan algoritma isihan pemilihan dalam Java
