当前位置:首页 > PHP教程 > php应用 > 列表

php生成EAN_13标准条形码实例

发布:smiling 来源: PHP粉丝网  添加日期:2020-06-28 16:14:57 浏览: 评论:0 

下面的就是生成EAN_13标准的条码的PHP方法,需要php+gd 环境:

  1. <?  
  2. function EAN_13($code) {  
  3.   //一个单元的宽度  
  4.   $lw = 2;  
  5.   //条码高   
  6.   $hi = 100;  
  7.   // the guide code is no coding,is used to show the left part coding type//  
  8.   // Array guide is used to record the EAN_13 is left part coding type//  
  9.   $Guide = array(1=>'AAAAAA','AABABB','AABBAB','ABAABB','ABBAAB','ABBBAA','ABABAB','ABABBA','ABBABA');  
  10.   $Lstart ='101';  
  11.   $Lencode = array("A" => array('0001101','0011001','0010011','0111101','0100011','0110001','0101111','0111011','0110111','0001011'),  
  12.                    "B" => array('0100111','0110011','0011011','0100001','0011101','0111001','0000101','0010001','0001001','0010111'));  
  13.   $Rencode = array('1110010','1100110','1101100','1000010','1011100',  
  14.                    '1001110','1010000','1000100','1001000','1110100');      
  15.  
  16.   $center = '01010';  
  17.  
  18.   $ends = '101';  
  19.   if ( strlen($code) != 13 )  
  20.    { die("UPC-A Must be 13 digits."); }  
  21. $lsum =0;  
  22. $rsum =0;  
  23.   for($i=0;$i<(strlen($code)-1);$i++)  
  24.   {  
  25.     if($i % 2)  
  26. {  
  27.  // $odd += $ncode[$x]  
  28.   $lsum +=(int)$code[$i];  
  29.  }else{  
  30.   $rsum +=(int)$code[$i];  
  31.  }  
  32.  
  33.   }  
  34.   $tsum = $lsum*3 + $rsum;  
  35.     if($code[12] != (10-($tsum % 10)))  
  36. {  
  37.    die("the code is bad!");  
  38.     }   
  39.  
  40.  // echo $Guide[$code[0]];  
  41.   $barcode = $Lstart;  
  42.   for($i=1;$i<=6;$i++)  
  43.   {  
  44.     $barcode .= $Lencode [$Guide[$code[0]][($i-1)]] [$code[$i]];  
  45.   }  
  46.   $barcode .= $center;  
  47.  
  48.   for($i=7;$i<13;$i++)  
  49.   {  
  50.     $barcode .= $Rencode[$code[($i)]] ;  
  51.   }  
  52.   $barcode .= $ends;  
  53.  
  54.     $img = ImageCreate($lw*95+60,$hi+30);  
  55.   $fg = ImageColorAllocate($img, 0, 0, 0);  
  56.   $bg = ImageColorAllocate($img, 255, 255, 255);  
  57.   ImageFilledRectangle($img, 0, 0, $lw*95+60, $hi+30, $bg);  
  58.   $shift=10;  
  59.   for ($x=0;$x<strlen($barcode);$x++) {  
  60.     if (($x<4) || ($x>=45 && $x<50) || ($x >=92))   
  61.   {   
  62.     $sh=10;   
  63.   } else {   
  64.     $sh=0;   
  65.   }  
  66.     if ($barcode[$x] == '1')   
  67. {   
  68.   $color = $fg;  
  69.     } else {   
  70.   $color = $bg;   
  71. }  
  72.     ImageFilledRectangle($img, ($x*$lw)+30,5,($x+1)*$lw+29,$hi+5+$sh,$color);  
  73.   }  
  74.   /* Add the Human Readable Label */  
  75.   ImageString($img,5,20,$hi+5,$code[0],$fg);  
  76.   for ($x=0;$x<6;$x++) {  
  77.     ImageString($img,5,$lw*(8+$x*6)+30,$hi+5,$code[$x+1],$fg);  
  78.     ImageString($img,5,$lw*(53+$x*6)+30,$hi+5,$code[$x+7],$fg);  
  79.   }  
  80.  // ImageString($img,4,$lw*95+17,$hi-5,$code[12],$fg);  
  81.   /* Output the Header and Content. */  
  82.   header("Content-Type: image/png");  
  83.   ImagePNG($img);  
  84. //phpfensi.com 
  85. }  
  86.  
  87. EAN_13('6901028055048');  
  88.  
  89. ?> 

Tags: php生成EAN_13标准条形码

分享到: