php生成条形码的图片的实例详解

因为用户的需要  写了一个条形码;用php生成一个条形码的图片  这个大家应该比我要好很多的吧,在自己项目的根目录下建立一个测试文件(直接把下面的代码放进去运行一下看看,我也是抄袭别人的),在实际的项目中你可以将下面的代码封装到一个公共类文件下的一个函数,然后调用。

class testinfo{  function UPCAbarcode($code) {    $trans_code = $code;    $lw = 2.2; $hi = 40;    $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";    /* 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*75+30,$hi-3);  // 95    $fg = ImageColorAllocate($img, 0, 0, 0);    $bg = ImageColorAllocate($img, 255, 255, 255);    ImageFilledRectangle($img, 0, 0, $lw*75+30, $hi+30, $bg);    $shift=10;    for ($x=0;$x<strlen($bars);$x++) {      if (($x<0) || ($x>=45 && $x<46) || ($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-7,$hi,$code[11],$fg);    /* Output the Header and Content. */    header("Content-Type: image/png");    ImagePNG($img);  }//}echo UPCAbarcode("201212070099");

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!