C语言学习网

使用php智能生成code128条形码

发表于:2023-03-24 作者:安全数据网编辑
编辑最后更新 2023年03月24日,这篇文章将为大家详细讲解有关使用php智能生成code128条形码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体如下:

这篇文章将为大家详细讲解有关使用php智能生成code128条形码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

具体如下:

self::STARTA,'B'=>self::STARTB,'C'=>self::STARTC);  private $code ='';  private $bin_code ='';  private $text ='';  public function __construct($code='',$text='',$type='B')  {    if (in_array($type,array('A','B','C')))      $this->setType($type);    else      $this->setType('B');    if ($code !=='')      $this->setCode($code);    if ($text !=='')      $this->setText($text);  }  public function setUnitWidth($unit_width)  {    $this->unit_width = $unit_width;    $this->quiet_zone = $this->unit_width*6;    $this->font_height = $this->unit_width*15;    if (!$this->is_set_height)    {      $this->heith = $this->unit_width*35;    }  }  public function setFontType($font_type)  {    $this->font_type = $font_type;  }  public function setBgcolor($bgcoloe)  {    $this->bgcolor = $bgcoloe;  }  public function setColor($color)  {    $this->color = $color;  }  public function setCode($code)  {    if ($code !='')    {      $this->code= $code;      if ($this->text ==='')        $this->text = $code;    }  }  public function setText($text)  {    $this->text = $text;  }  public function setType($type)  {    $this->type = $type;  }  public function setHeight($height)  {    $this->height = $height;    $this->is_set_height = true;  }  private function getValueFromChar($ch)  {    $val = ord($ch);    try    {      if ($this->type =='A')      {        if ($val > 95)          throw new Exception(' illegal barcode character '.$ch.' for code128A in '.__FILE__.' on line '.__LINE__);        if ($val < 32)          $val += 64;        else          $val -=32;      }      elseif ($this->type =='B')      {        if ($val < 32 || $val > 127)          throw new Exception(' illegal barcode character '.$ch.' for code128B in '.__FILE__.' on line '.__LINE__);        else          $val -=32;      }      else      {        if (!is_numeric($ch) || (int)$ch < 0 || (int)($ch) > 99)          throw new Exception(' illegal barcode character '.$ch.' for code128C in '.__FILE__.' on line '.__LINE__);        else        {          if (strlen($ch) ==1)            $ch .='0';          $val = (int)($ch);        }      }    }    catch(Exception $ex)    {      errorlog('die',$ex->getMessage());    }    return $val;  }  private function parseCode()  {    $this->type=='C'?$step=2:$step=1;    $val_sum = $this->start_codes[$this->type];    $this->width = 35;    $this->bin_code = $this->codes[$val_sum];    for($i =0;$icode);$i+=$step)    {      $this->width +=11;      $ch = substr($this->code,$i,$step);      $val = $this->getValueFromChar($ch);      $val_sum += $val;      $this->bin_code .= $this->codes[$val];    }    $this->width *=$this->unit_width;    $val_sum = $val_sum3;    $this->valid_code = $val_sum;    $this->bin_code .= $this->codes[$this->valid_code];    $this->bin_code .= $this->codes[self::STOP];  }  public function getValidCode()  {    if ($this->valid_code == -1)      $this->parseCode();    return $this->valid_code;  }  public function getWidth()  {    if ($this->width ==-1)      $this->parseCode();    return $this->width;  }  public function getHeight()  {    if ($this->width ==-1)      $this->parseCode();    return $this->height;  }  public function createBarCode($image_type ='png',$file_name=null)  {    $this->parseCode();    $this->image = ImageCreate($this->width+2*$this->quiet_zone,$this->heith + $this->font_height);    $this->bgcolor = imagecolorallocate($this->image,$this->bgcolor >> 16,($this->bgcolor >> 8)&0x00FF,$this->bgcolor & 0xFF);    $this->color = imagecolorallocate($this->image,$this->color >> 16,($this->color >> 8)&0x00FF,$this->color & 0xFF);    ImageFilledRectangle($this->image, 0, 0, $this->width + 2*$this->quiet_zone,$this->heith + $this->font_height, $this->bgcolor);    $sx = $this->quiet_zone;    $sy = $this->font_height -1;    $fw = 10; //編號為2或3的字體的寬度為10,為4或5的字體寬度為11    if ($this->font_type >3)    {      $sy++;      $fw=11;    }    $ex = 0;    $ey = $this->heith + $this->font_height - 2;    for($i=0;$ibin_code);$i++)    {      $ex = $sx + $this->unit_width*(int) $this->bin_code{$i} -1;      if ($i%2==0)        ImageFilledRectangle($this->image, $sx, $sy, $ex,$ey, $this->color);      $sx =$ex + 1;    }    $t_num = strlen($this->text);    $t_x = $this->width/$t_num;    $t_sx = ($t_x -$fw)/2;    //目的为了使文字居中平均分布    for($i=0;$i<$t_num;$i++)    {      imagechar($this->image,$this->font_type,6*$this->unit_width +$t_sx +$i*$t_x,0,$this->text{$i},$this->color);    }    if (!$file_name)    {      header("Content-Type: image/".$image_type);    }    switch ($image_type)    {      case 'jpg':      case 'jpeg':        Imagejpeg($this->image,$file_name);        break;      case 'png':        Imagepng($this->image,$file_name);        break;      case 'gif':        break;        Imagegif($this->image,$file_name);      default:        Imagepng($this->image,$file_name);        break;    }  }}$barcode = new BarCode128('88888888');$barcode->createBarCode();?>

关于使用php智能生成code128条形码就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0