Podgląd pliku: / jacekk.info / code128.phps
<?php
/***************************************************
* Kody kreskowe - Code 128 *
***************************************************
* Wersja: 1.2 *
* Autor: Jacek Kowalski (http://jacekk.info) *
* *
* Strona WWW: http://jacekk.info/scripts/barcodes *
* *
* Utwór rozprowadzany na licencji *
* http://creativecommons.org/licenses/by-nc/2.5/ *
***************************************************/
/* Kodowanie znaków UTF-8 */
$id_to_sign = array(
'0' => array(' ', '00', '11011001100'),
'1' => array('!', '01', '11001101100'),
'2' => array('"', '02', '11001100110'),
'3' => array('#', '03', '10010011000'),
'4' => array('$', '04', '10010001100'),
'5' => array('%', '05', '10001001100'),
'6' => array('&', '06', '10011001000'),
'7' => array('\'', '07', '10011000100'),
'8' => array('(', '08', '10001100100'),
'9' => array(')', '09', '11001001000'),
'10' => array('*', '10', '11001000100'),
'11' => array('+', '11', '11000100100'),
'12' => array(',', '12', '10110011100'),
'13' => array('-', '13', '10011011100'),
'14' => array('.', '14', '10011001110'),
'15' => array('/', '15', '10111001100'),
'16' => array('0', '16', '10011101100'),
'17' => array('1', '17', '10011100110'),
'18' => array('2', '18', '11001110010'),
'19' => array('3', '19', '11001011100'),
'20' => array('4', '20', '11001001110'),
'21' => array('5', '21', '11011100100'),
'22' => array('6', '22', '11001110100'),
'23' => array('7', '23', '11101101110'),
'24' => array('8', '24', '11101001100'),
'25' => array('9', '25', '11100101100'),
'26' => array(':', '26', '11100100110'),
'27' => array(';', '27', '11101100100'),
'28' => array('<', '28', '11100110100'),
'29' => array('=', '29', '11100110010'),
'30' => array('>', '30', '11011011000'),
'31' => array('?', '31', '11011000110'),
'32' => array('@', '32', '11000110110'),
'33' => array('A', '33', '10100011000'),
'34' => array('B', '34', '10001011000'),
'35' => array('C', '35', '10001000110'),
'36' => array('D', '36', '10110001000'),
'37' => array('E', '37', '10001101000'),
'38' => array('F', '38', '10001100010'),
'39' => array('G', '39', '11010001000'),
'40' => array('H', '40', '11000101000'),
'41' => array('I', '41', '11000100010'),
'42' => array('J', '42', '10110111000'),
'43' => array('K', '43', '10110001110'),
'44' => array('L', '44', '10001101110'),
'45' => array('M', '45', '10111011000'),
'46' => array('N', '46', '10111000110'),
'47' => array('O', '47', '10001110110'),
'48' => array('P', '48', '11101110110'),
'49' => array('Q', '49', '11010001110'),
'50' => array('R', '50', '11000101110'),
'51' => array('S', '51', '11011101000'),
'52' => array('T', '52', '11011100010'),
'53' => array('U', '53', '11011101110'),
'54' => array('V', '54', '11101011000'),
'55' => array('W', '55', '11101000110'),
'56' => array('X', '56', '11100010110'),
'57' => array('Y', '57', '11101101000'),
'58' => array('Z', '58', '11101100010'),
'59' => array('[', '59', '11100011010'),
'60' => array('\\', '60', '11101111010'),
'61' => array(']', '61', '11001000010'),
'62' => array('^', '62', '11110001010'),
'63' => array('_', '63', '10100110000'),
'64' => array('`', '64', '10100001100'),
'65' => array('a', '65', '10010110000'),
'66' => array('b', '66', '10010000110'),
'67' => array('c', '67', '10000101100'),
'68' => array('d', '68', '10000100110'),
'69' => array('e', '69', '10110010000'),
'70' => array('f', '70', '10110000100'),
'71' => array('g', '71', '10011010000'),
'72' => array('h', '72', '10011000010'),
'73' => array('i', '73', '10000110100'),
'74' => array('j', '74', '10000110010'),
'75' => array('k', '75', '11000010010'),
'76' => array('l', '76', '11001010000'),
'77' => array('m', '77', '11110111010'),
'78' => array('n', '78', '11000010100'),
'79' => array('o', '79', '10001111010'),
'80' => array('p', '80', '10100111100'),
'81' => array('q', '81', '10010111100'),
'82' => array('r', '82', '10010011110'),
'83' => array('s', '83', '10111100100'),
'84' => array('t', '84', '10011110100'),
'85' => array('u', '85', '10011110010'),
'86' => array('v', '86', '11110100100'),
'87' => array('w', '87', '11110010100'),
'88' => array('x', '88', '11110010010'),
'89' => array('y', '89', '11011011110'),
'90' => array('z', '90', '11011110110'),
'91' => array('{', '91', '11110110110'),
'92' => array('|', '92', '10101111000'),
'93' => array('}', '93', '10100011110'),
'94' => array('~', '94', '10001011110'),
'95' => array('del', '95', '10111101000'),
'96' => array('Fnc 3', '96', '10111100010'),
'97' => array('Fnc 2', '97', '11110101000'),
'98' => array('Shift', '98', '11110100010'),
'99' => array('Code C', '99', '10111011110'),
'100' => array('Fnc 4', 'Code B', '10111101110'),
'101' => array('Code A', 'Code A', '11101011110'),
'102' => array('Fnc 1', 'Fnc 1', '11110101110'),
'103' => array('Start A', 'Start A', '11010000100'),
'104' => array('Start B', 'Start B', '11010010000'),
'105' => array('Start C', 'Start C', '11010011100'),
'106' => array('Stop', 'Stop', '1100011101011')
);
$sign_to_id = array(
' ' => array('B' => '0'),
'!' => array('B' => '1'),
'"' => array('B' => '2'),
'#' => array('B' => '3'),
'$' => array('B' => '4'),
'%' => array('B' => '5'),
'&' => array('B' => '6'),
'\'' => array('B' => '60'),
'(' => array('B' => '8'),
')' => array('B' => '9'),
'*' => array('B' => '10'),
'+' => array('B' => '11'),
',' => array('B' => '12'),
'-' => array('B' => '13'),
'.' => array('B' => '14'),
'/' => array('B' => '15'),
'00' => array('C' => '0'),
'01' => array('C' => '1'),
'02' => array('C' => '2'),
'03' => array('C' => '3'),
'04' => array('C' => '4'),
'05' => array('C' => '5'),
'06' => array('C' => '6'),
'07' => array('C' => '7'),
'08' => array('C' => '8'),
'09' => array('C' => '9'),
':' => array('B' => '26'),
';' => array('B' => '27'),
'<' => array('B' => '28'),
'=' => array('B' => '29'),
'>' => array('B' => '30'),
'?' => array('B' => '31'),
'@' => array('B' => '32'),
'A' => array('B' => '33'),
'B' => array('B' => '34'),
'C' => array('B' => '35'),
'Code A' => array('B' => '101', 'C' => '101'),
'Code B' => array('C' => '100'),
'Code C' => array('B' => '99'),
'D' => array('B' => '36'),
'E' => array('B' => '37'),
'F' => array('B' => '38'),
'Fnc 1' => array('B' => '102', 'C' => '102'),
'Fnc 2' => array('B' => '97'),
'Fnc 3' => array('B' => '96'),
'Fnc 4' => array('B' => '100'),
'G' => array('B' => '39'),
'H' => array('B' => '40'),
'I' => array('B' => '41'),
'J' => array('B' => '42'),
'K' => array('B' => '43'),
'L' => array('B' => '44'),
'M' => array('B' => '45'),
'N' => array('B' => '46'),
'O' => array('B' => '47'),
'P' => array('B' => '48'),
'Q' => array('B' => '49'),
'R' => array('B' => '50'),
'S' => array('B' => '51'),
'Shift' => array('B' => '98'),
'Start A' => array('B' => '103', 'C' => '103'),
'Start B' => array('B' => '104', 'C' => '104'),
'Start C' => array('B' => '105', 'C' => '105'),
'0' => array('B' => '16'),
'Stop' => array('B' => '106', 'C' => '106'),
'T' => array('B' => '52'),
'U' => array('B' => '53'),
'V' => array('B' => '54'),
'W' => array('B' => '55'),
'X' => array('B' => '56'),
'Y' => array('B' => '57'),
'Z' => array('B' => '58'),
'[' => array('B' => '59'),
']' => array('B' => '61'),
'^' => array('B' => '62'),
'_' => array('B' => '63'),
'`' => array('B' => '64'),
'a' => array('B' => '65'),
'b' => array('B' => '66'),
'c' => array('B' => '67'),
'd' => array('B' => '68'),
'e' => array('B' => '69'),
'f' => array('B' => '70'),
'g' => array('B' => '71'),
'h' => array('B' => '72'),
'i' => array('B' => '73'),
'j' => array('B' => '74'),
'k' => array('B' => '75'),
'l' => array('B' => '76'),
'm' => array('B' => '77'),
'n' => array('B' => '78'),
'o' => array('B' => '79'),
'p' => array('B' => '80'),
'q' => array('B' => '81'),
'r' => array('B' => '82'),
's' => array('B' => '83'),
't' => array('B' => '84'),
'u' => array('B' => '85'),
'v' => array('B' => '86'),
'w' => array('B' => '87'),
'x' => array('B' => '88'),
'y' => array('B' => '89'),
'z' => array('B' => '90'),
'{' => array('B' => '91'),
'|' => array('B' => '92'),
'}' => array('B' => '93'),
'~' => array('B' => '94'),
'1' => array('B' => '17'),
'2' => array('B' => '18'),
'3' => array('B' => '19'),
'4' => array('B' => '20'),
'5' => array('B' => '21'),
'6' => array('B' => '22'),
'7' => array('B' => '23'),
'8' => array('B' => '24'),
'9' => array('B' => '25'),
'10' => array('C' => '10'),
'11' => array('C' => '11'),
'12' => array('C' => '12'),
'13' => array('C' => '13'),
'14' => array('C' => '14'),
'15' => array('C' => '15'),
'16' => array('C' => '16'),
'17' => array('C' => '17'),
'18' => array('C' => '18'),
'19' => array('C' => '19'),
'20' => array('C' => '20'),
'21' => array('C' => '21'),
'22' => array('C' => '22'),
'23' => array('C' => '23'),
'24' => array('C' => '24'),
'25' => array('C' => '25'),
'26' => array('C' => '26'),
'27' => array('C' => '27'),
'28' => array('C' => '28'),
'29' => array('C' => '29'),
'30' => array('C' => '30'),
'31' => array('C' => '31'),
'32' => array('C' => '32'),
'33' => array('C' => '33'),
'34' => array('C' => '34'),
'35' => array('C' => '35'),
'36' => array('C' => '36'),
'37' => array('C' => '37'),
'38' => array('C' => '38'),
'39' => array('C' => '39'),
'40' => array('C' => '40'),
'41' => array('C' => '41'),
'42' => array('C' => '42'),
'43' => array('C' => '43'),
'44' => array('C' => '44'),
'45' => array('C' => '45'),
'46' => array('C' => '46'),
'47' => array('C' => '47'),
'48' => array('C' => '48'),
'49' => array('C' => '49'),
'50' => array('C' => '50'),
'51' => array('C' => '51'),
'52' => array('C' => '52'),
'53' => array('C' => '53'),
'54' => array('C' => '54'),
'55' => array('C' => '55'),
'56' => array('C' => '56'),
'57' => array('C' => '57'),
'58' => array('C' => '58'),
'59' => array('C' => '59'),
'60' => array('C' => '60'),
'61' => array('C' => '61'),
'62' => array('C' => '62'),
'63' => array('C' => '63'),
'64' => array('C' => '64'),
'65' => array('C' => '65'),
'66' => array('C' => '66'),
'67' => array('C' => '67'),
'68' => array('C' => '68'),
'69' => array('C' => '69'),
'70' => array('C' => '70'),
'71' => array('C' => '71'),
'72' => array('C' => '72'),
'73' => array('C' => '73'),
'74' => array('C' => '74'),
'75' => array('C' => '75'),
'76' => array('C' => '76'),
'77' => array('C' => '77'),
'78' => array('C' => '78'),
'79' => array('C' => '79'),
'80' => array('C' => '80'),
'81' => array('C' => '81'),
'82' => array('C' => '82'),
'83' => array('C' => '83'),
'84' => array('C' => '84'),
'85' => array('C' => '85'),
'86' => array('C' => '86'),
'87' => array('C' => '87'),
'88' => array('C' => '88'),
'89' => array('C' => '89'),
'90' => array('C' => '90'),
'91' => array('C' => '91'),
'92' => array('C' => '92'),
'93' => array('C' => '93'),
'94' => array('C' => '94'),
'95' => array('C' => '95'),
'96' => array('C' => '96'),
'97' => array('C' => '97'),
'98' => array('C' => '98'),
'99' => array('C' => '99')
);
function print_code($kod, $img) {
global $b;
$now = 0;
$kod = str_split($kod);
foreach($kod as $val) {
if($val==1) {
imageline($img, $now, 0, $now, 40, $b);
}
$now++;
}
}
function gen_binary($kod) {
global $id_to_sign, $sign_to_id;
$csm = $sign_to_id['Start B']['B'];
$ret = $id_to_sign[$sign_to_id['Start B']['B']][2];
$now = 1;
$typ = 'B';
$kod = str_split($kod);
foreach($kod as $key => $val) {
if(is_numeric($val) AND is_numeric($kod[$key+1]) AND !isset($num)) {
if($now==1) {
$csm = $sign_to_id['Start C']['B'];
$ret = $id_to_sign[$sign_to_id['Start C']['B']][2];
$typ = 'C';
}
$num = $val;
continue;
}
elseif(is_numeric($val) AND isset($num)) {
if($typ!='C') {
$ret .= $id_to_sign[$sign_to_id['Code C']['B']][2];
$csm += $sign_to_id['Code C']['B']*$now;
$typ = 'C';
$now++;
}
$ret .= $id_to_sign[$sign_to_id[$num.$val]['C']][2];
$csm += $sign_to_id[$num.$val]['C']*$now;
unset($num);
}
else
{
if($typ!='B') {
$ret .= $id_to_sign[$sign_to_id['Code B']['C']][2];
$csm += $sign_to_id['Code B']['C']*$now;
$typ = 'B';
$now++;
}
$ret .= $id_to_sign[$sign_to_id[$val]['B']][2];
$csm += $sign_to_id[$val]['B']*$now;
}
$now++;
}
return $ret . $id_to_sign[$csm%103][2] . $id_to_sign[$sign_to_id['Stop'][$typ]][2];
}
$kod = gen_binary($_GET['kod']);
$i = imagecreate(strlen($kod), 40);
$w = imagecolorallocate($i, 255, 255, 255);
$b = imagecolorallocate($i, 0, 0, 0);
print_code($kod, $i);
header('Content-type: image/gif');
imagegif($i);
?>
Browse Code © 2010 by Jacek Kowalski