PHP生成条形码实现程序
条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符,常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成平行线的图案对于上面有个大概的了解后,下面我们可以重新整合下代码,更加方便的使用它,代码如下:
<?php function UPCAbarcode($code) { $lw = 2; $hi = 100; $Lencode = array( '0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011' ); $Rencode = array( '1110010', '1100110', '1101100', '1000010', '1011100', '1001110', '1010000', '1000100', '1001000', '1110100' ); $ends = '101'; $center = '01010'; /* UPC-A Must be 11 digits, we compute the checksum. */ if (strlen($code) != 11) { die("UPC-A Must be 11 digits."); } /* Compute the EAN-13 Checksum digit */ $ncode = '0' . $code; $even = 0; $odd = 0; for ($x = 0; $x < 12; $x++) { if ($x % 2) { $odd+= $ncode[$x]; } else { $even+= $ncode[$x]; } } $code.= (10 - (($odd * 3 + $even) % 10)) % 10; /* Create the bar encoding using a binary string */ $bars = $ends; $bars.= $Lencode[$code[0]]; for ($x = 1; $x < 6; $x++) { $bars.= $Lencode[$code[$x]]; } $bars.= $center; for ($x = 6; $x < 12; $x++) { $bars.= $Rencode[$code[$x]]; } $bars.= $ends; /* Generate the Barcode Image */ $img = ImageCreate($lw * 95 + 30, $hi + 30); $fg = ImageColorAllocate($img, 0, 0, 0); $bg = ImageColorAllocate($img, 255, 255, 255); ImageFilledRectangle($img, 0, 0, $lw * 95 + 30, $hi + 30, $bg); $shift = 10; for ($x = 0; $x < strlen($bars); $x++) { if (($x < 10) || ($x >= 45 && $x < 50) || ($x >= 85)) { $sh = 10; } else { $sh = 0; } if ($bars[$x] == '1') { $color = $fg; } else { $color = $bg; } ImageFilledRectangle($img, ($x * $lw) + 15, 5, ($x + 1) * $lw + 14, $hi + 5 + $sh, $color); } /* Add the Human Readable Label */ ImageString($img, 4, 5, $hi - 5, $code[0], $fg); for ($x = 0; $x < 5; $x++) { ImageString($img, 5, $lw * (13 + $x * 6) + 15, $hi + 5, $code[$x + 1], $fg); ImageString($img, 5, $lw * (53 + $x * 6) + 15, $hi + 5, $code[$x + 6], $fg); } ImageString($img, 4, $lw * 95 + 17, $hi - 5, $code[11], $fg); /* Output the Header and Content. */ header("Content-Type: image/png"); ImagePNG($img); } UPCAbarcode('13322483157'); ?>
本文地址:http://www.phprm.com/tuxiang/fs1079.html
转载随意,但请附上文章地址:-)