├── README.markdown └── barcode.php /README.markdown: -------------------------------------------------------------------------------- 1 | # Code 39 Barcode generator 2 | 3 | Simple PHP class for generating Code39 barcode images. Really simple stuff: just do 4 | 5 | barcode::code39('text to encode'); 6 | 7 | Optionally, add a height in pixels and/or a width multiplier: 8 | 9 | barcode::code39('text to encode', $height_in_px, $width_multiplier); 10 | 11 | Currently it will always send the "Content-type: image/png" header and output the code. Future revisions may support writing to file, etc. 12 | -------------------------------------------------------------------------------- /barcode.php: -------------------------------------------------------------------------------- 1 | 'bwbwwwbbbwbbbwbw','1' => 'bbbwbwwwbwbwbbbw', 16 | '2' => 'bwbbbwwwbwbwbbbw','3' => 'bbbwbbbwwwbwbwbw', 17 | '4' => 'bwbwwwbbbwbwbbbw','5' => 'bbbwbwwwbbbwbwbw', 18 | '6' => 'bwbbbwwwbbbwbwbw','7' => 'bwbwwwbwbbbwbbbw', 19 | '8' => 'bbbwbwwwbwbbbwbw','9' => 'bwbbbwwwbwbbbwbw', 20 | 'A' => 'bbbwbwbwwwbwbbbw','B' => 'bwbbbwbwwwbwbbbw', 21 | 'C' => 'bbbwbbbwbwwwbwbw','D' => 'bwbwbbbwwwbwbbbw', 22 | 'E' => 'bbbwbwbbbwwwbwbw','F' => 'bwbbbwbbbwwwbwbw', 23 | 'G' => 'bwbwbwwwbbbwbbbw','H' => 'bbbwbwbwwwbbbwbw', 24 | 'I' => 'bwbbbwbwwwbbbwbw','J' => 'bwbwbbbwwwbbbwbw', 25 | 'K' => 'bbbwbwbwbwwwbbbw','L' => 'bwbbbwbwbwwwbbbw', 26 | 'M' => 'bbbwbbbwbwbwwwbw','N' => 'bwbwbbbwbwwwbbbw', 27 | 'O' => 'bbbwbwbbbwbwwwbw','P' => 'bwbbbwbbbwbwwwbw', 28 | 'Q' => 'bwbwbwbbbwwwbbbw','R' => 'bbbwbwbwbbbwwwbw', 29 | 'S' => 'bwbbbwbwbbbwwwbw','T' => 'bwbwbbbwbbbwwwbw', 30 | 'U' => 'bbbwwwbwbwbwbbbw','V' => 'bwwwbbbwbwbwbbbw', 31 | 'W' => 'bbbwwwbbbwbwbwbw','X' => 'bwwwbwbbbwbwbbbw', 32 | 'Y' => 'bbbwwwbwbbbwbwbw','Z' => 'bwwwbbbwbbbwbwbw', 33 | '-' => 'bwwwbwbwbbbwbbbw','.' => 'bbbwwwbwbwbbbwbw', 34 | ' ' => 'bwwwbbbwbwbbbwbw','*' => 'bwwwbwbbbwbbbwbw', 35 | '$' => 'bwwwbwwwbwwwbwbw','/' => 'bwwwbwwwbwbwwwbw', 36 | '+' => 'bwwwbwbwwwbwwwbw','%' => 'bwbwwwbwwwbwwwbw'); 37 | 38 | 39 | public static function code39($text, $height = 50, $widthScale = 1) { 40 | if (!preg_match('/^[A-Z0-9-. $+\/%]+$/i', $text)) { 41 | throw new Exception('Invalid text input.'); 42 | } 43 | 44 | $text = '*' . strtoupper($text) . '*'; // *UPPERCASE TEXT* 45 | $length = strlen($text); 46 | 47 | $barcode = imageCreate($length * 16 * $widthScale, $height); 48 | 49 | $bg = imagecolorallocate($barcode, 255, 255, 0); //sets background to yellow 50 | imagecolortransparent($barcode, $bg); //makes that yellow transparent 51 | $black = imagecolorallocate($barcode, 0, 0, 0); //defines a color for black 52 | 53 | $chars = str_split($text); 54 | 55 | $colors = ''; 56 | 57 | foreach ($chars as $char) { 58 | $colors .= self::$code39[$char]; 59 | } 60 | 61 | foreach (str_split($colors) as $i => $color) { 62 | if ($color == 'b') { 63 | // imageLine($barcode, $i, 0, $i, $height-13, $black); 64 | imageFilledRectangle($barcode, $widthScale * $i, 0, $widthScale * ($i+1) -1 , $height-13, $black); 65 | } 66 | } 67 | 68 | //16px per bar-set, halved, minus 6px per char, halved (5*length) 69 | // $textcenter = $length * 5 * $widthScale; 70 | $textcenter = ($length * 8 * $widthScale) - ($length * 3); 71 | 72 | imageString($barcode, 2, $textcenter, $height-13, $text, $black); 73 | 74 | header('Content-type: image/png'); 75 | imagePNG($barcode); 76 | imageDestroy($barcode); 77 | exit; 78 | } // function code39 79 | } // class barcode 80 | --------------------------------------------------------------------------------