Scripts
Barcodes maker
Maak je eigen barcodes met dit script. Voorbeeld: http://www.nieko.net/tools/barcode.php Heb de code van een andere pagina namelijk nieko.net. Het is freeware, vandaar dat ik het ook post.
barcodes-maker
[code]
<?php
/*
* This script can be used to create barcode-images in the following formats:
* UPC-A /^[0-9]{12}$/
* UPC-E /^[01][0-9]{7}$/
* EAN-13 /^[0-9]{13}$/
* EAN-8 /^[0-9]{8}$/
* Code 39 /^\*[0-9A-Z\-\.\$\/+% ]{1,48}\*$/
* Codabar /^([ABCD])[0-9\-\$:\/\.\+]{1,48}\\1$/i
* 128C /^(\d\d)+$/
* Also, UPC- and EAN-codes can be suffixed with additional 2- or 5-digit
* supplemental code.
* Additional info: when printing, 38 pixels take up 1 cm of space.
*
*
* Copyright (c) 2002 Nieko Maatjes (nieko.net)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* See http://www.gnu.org/licenses/gpl.txt
*
*/
$title = 'Barcode creator';
//data for encoding digits/letters to bars (=1) and spaces (=0)
$a = array('0001101', //0
'0011001', //1
'0010011', //2
'0111101', //3
'0100011', //4
'0110001', //5
'0101111', //6
'0111011', //7
'0110111', //8
'0001011'); //9
$b = array('0100111', //0
'0110011', //1
'0011011', //2
'0100001', //3
'0011101', //4
'0111011', //5
'0000101', //6
'0010001', //7
'0001001', //8
'0010111'); //9
$right = array('1110010', //0
'1100110', //1
'1101100', //2
'1000010', //3
'1011100', //4
'1001110', //5
'1010000', //6
'1000100', //7
'1001000', //8
'1110100'); //9
$AB = array('aaaaaa', //0
'aababb', //1
'aabbab', //2
'aabbba', //3
'abaabb', //4
'abbaab', //5
'abbbaa', //6
'ababab', //7
'ababba', //8
'abbaba'); //9
$UPCE = array('bbbaaa', //0
'bbabaa', //1
'bbaaba', //2
'bbaaab', //3
'babbaa', //4
'baabba', //5
'baaabb', //6
'bababa', //7
'babaab', //8
'baabab'); //9
$code39 = array('0' => '101001101101',
'1' => '110100101011',
'2' => '101100101011',
'3' => '110110010101',
'4' => '101001101011',
'5' => '110100110101',
'6' => '101100110101',
'7' => '101001011011',
'8' => '110100101101',
'9' => '101100101101',
'A' => '110101001011',
'B' => '101101001011',
'C' => '110110100101',
'D' => '101011001011',
'E' => '110101100101',
'F' => '101101100101',
'G' => '101010011011',
'H' => '110101001101',
'I' => '101101001101',
'J' => '101011001101',
'K' => '110101010011',
'L' => '101101010011',
'M' => '110110101001',
'N' => '101011010011',
'O' => '110101101001',
'P' => '101101101001',
'Q' => '101010110011',
'R' => '110101011001',
'S' => '101101011001',
'T' => '101011011001',
'U' => '110010101011',
'V' => '100110101011',
'W' => '110011010101',
'X' => '100101101011',
'Y' => '110010110101',
'Z' => '100110110101',
'-' => '100101011011',
'.' => '110010101101',
' ' => '100110101101',
'$' => '100100100101',
'/' => '100100101001',
'+' => '100101001001',
'%' => '101001001001',
'*' => '100101101101');
$codabar = array('0' => '101010011',
'1' => '101011001',
'2' => '101001011',
'3' => '110010101',
'4' => '101101001',
'5' => '110101001',
'6' => '100101011',
'7' => '100101101',
'8' => '100110101',
'9' => '110100101',
'-' => '101001101',
'$' => '101100101',
':' => '1101011011',
'/' => '1101101011',
'.' => '1101101101',
'+' => '1011011011',
'A' => '1011001001', //A=a, B=b, C=c, D=d
'B' => '1010010011',
'C' => '1001001011',
'D' => '1010011001',
'a' => '1011001001',
'b' => '1010010011',
'c' => '1001001011',
'd' => '1010011001');
$kix = array('0' => 'mmww', //t=top, b=bottom, m=middle, w=whole
'1' => 'mbtw',
'2' => 'mbwt',
'3' => 'bmtw',
'4' => 'bmwt',
'5' => 'bbtt',
'6' => 'mtbw',
'7' => 'mwmw',
'8' => 'mwbt',
'9' => 'btmw',
'A' => 'btbt',
'B' => 'bwmt',
'C' => 'mtwb',
'D' => 'mwtb',
'E' => 'mwwm',
'F' => 'bttb',
'G' => 'btwm',
'H' => 'bwtm',
'I' => 'tmbw',
'J' => 'tbmw',
'K' => 'tbbt',
'L' => 'wmmw',
'M' => 'wmbt',
'N' => 'wbmt',
'O' => 'tmwb',
'P' => 'tbtb',
'Q' => 'tbwm',
'R' => 'wmtb',
'S' => 'wmwm',
'T' => 'wbtm',
'U' => 'ttbb',
'V' => 'twmb',
'W' => 'twbm',
'X' => 'wtmb',
'Y' => 'wtmb',
'Z' => 'wwmm');
//128C
// BWBWBW
$bar128c = array('00' => '212222',
'01' => '222122',
'02' => '222221',
'03' => '121223',
'04' => '121322',
'05' => '131222',
'06' => '122213',
'07' => '122312',
'08' => '132212',
'09' => '221213',
'10' => '221312',
'11' => '231212',
'12' => '112232',
'13' => '122132',
'14' => '122231',
'15' => '113222',
'16' => '123122',
'17' => '123221',
'18' => '223211',
'19' => '221132',
'20' => '221231',
'21' => '213212',
'22' => '223112',
'23' => '312131',
'24' => '311222',
'25' => '321122',
'26' => '321221',
'27' => '312212',
'28' => '322112',
'29' => '322211',
'30' => '212123',
'31' => '212321',
'32' => '232121',
'33' => '111323',
'34' => '131123',
'35' => '131321',
'36' => '112313',
'37' => '132113',
'38' => '132311',
'39' => '211313',
'40' => '231113',
'41' => '231311',
'42' => '112133',
'43' => '112331',
'44' => '132131',
'45' => '113123',
'46' => '113321',
'47' => '133121',
'48' => '313121',
'49' => '211331',
'50' => '231131',
'51' => '213113',
'52' => '213311',
'53' => '213131',
'54' => '311123',
'55' => '311321',
'56' => '331121',
'57' => '312113',
'58' => '312311',
'59' => '332111',
'60' => '314111',
'61' => '221411',
'62' => '431111',
'63' => '111224',
'64' => '111422',
'65' => '121124',
'66' => '121421',
'67' => '141122',
'68' => '141221',
'69' => '112214',
'70' => '112412',
'71' => '122114',
'72' => '122411',
'73' => '142112',
'74' => '142211',
'75' => '241211',
'76' => '221114',
'77' => '413111',
'78' => '241112',
'79' => '134111',
'80' => '111242',
'81' => '121142',
'82' => '121241',
'83' => '114212',
'84' => '124112',
'85' => '124211',
'86' => '411212',
'87' => '421112',
'88' => '421211',
'89' => '212141',
'90' => '214121',
'91' => '412121',
'92' => '111143',
'93' => '111341',
'94' => '131141',
'95' => '114113',
'96' => '114311',
'97' => '411113',
'98' => '411311',
'99' => '113141',
'ST' => '211232', //START
'OP' => '2331112'); //STOP
if (isset($_GET['barcode'])) //process $barcode only if it really contains something
{
$barcode = $_GET['barcode'];
$coding = $_GET['coding'];
$override = (isset($_GET['override']) ? $_GET['override'] : '');
$dispcod = (isset($_GET['dispcod']) ? 15 : 0); //15 is number of pixels image should be moved downwards
if (preg_match("/^[0-9]{12}(,[0-9]{2,5})?$/", $barcode)) //if UPC-code, change to EAN-code with no extra coding
{
$barcode = '0'.$barcode; //make UPC and EAN-codes both 13 characters long
}
//process barcode
//if correct UPC-A / EAN-13-code
if (preg_match("/^[0-9]{13}(,[0-9]{2,5})?$/", $barcode) && ($coding == 'DWIM' || $coding == 'UPC-A' || $coding == 'EAN-13'))
{
$gobackn = ($barcode[0] == '0' ? 10 : 0); //$gobackn is used to make the image smaller when working with UPC-A
if (strlen($barcode) == 13)
{ CreateImage(105 - $gobackn, 62 + $dispcod); }
elseif (strlen($barcode) == 16)
{ CreateImage(132 - $gobackn, 62 + $dispcod); }
elseif (strlen($barcode) == 19)
{ CreateImage(168 - $gobackn, 62 + $dispcod); }
//draw numbers
if ($barcode[0] != '0')
{ ImageString($image, 3, 2, 50 + $dispcod, $barcode[0], $black); }
if ($dispcod && $barcode[0] != '0') //draw preceeding EAN-number
{ ImageString($image, 3, 36, 0, 'EAN-13', $black); }
elseif ($dispcod) //UPC-A
{
ImageString($image, 3, 31, 0, 'UPC-A', $black);
}
ImageString($image, 3, 14 - $gobackn, 50 + $dispcod, substr($barcode, 1, 6), $black);
ImageString($image, 3, 60 - $gobackn, 50 + $dispcod, substr($barcode, 7, 6), $black);
//draw guard bars
ImageLine($image, 10 - $gobackn, $dispcod, 10 - $gobackn, 62 + $dispcod, $black);
ImageLine($image, 12 - $gobackn, $dispcod, 12 - $gobackn, 62 + $dispcod, $black);
ImageLine($image, 56 - $gobackn, $dispcod, 56 - $gobackn, 62 + $dispcod, $black);
ImageLine($image, 58 - $gobackn, $dispcod, 58 - $gobackn, 62 + $dispcod, $black);
ImageLine($image, 102 - $gobackn, $dispcod, 102 - $gobackn, 62 + $dispcod, $black);
ImageLine($image, 104 - $gobackn, $dispcod, 104 - $gobackn, 62 + $dispcod, $black);
$position = 13; //start drawing bars at x = 13;
for ($digit = 1; $digit <= 6; $digit++) //first digit should be skipped, is either 0 (UPC) or encoded in next six (EAN)
{
for ($offset = 0; $offset < 7; $offset++)
{
$color = $AB[$barcode[0]]; //$barcode[0] is first digit that is coded into first 42 (6*7) bars
$color = substr($color, $digit - 1, 1);
$color = ${$color};
$color = substr($color[$barcode[$digit]], $offset, 1);
$color = ($color == '1' ? $black : $white);
ImageLine($image, $position - $gobackn, $dispcod, $position - $gobackn, 50 + $dispcod, $color);
$position++;
}
}
$position += 5;
for ($digit = 7; $digit <= 12; $digit++)
{
for ($offset = 0; $offset < 7; $offset++)
{
$color = substr($right[$barcode[$digit]], $offset, 1);
$color = ($color == '1' ? $black : $white);
ImageLine($image, $position - $gobackn, $dispcod, $position - $gobackn, 50 + $dispcod, $color);
$position++;
}
}
if (preg_match("/,[0-9]{2,5}$/", $barcode))
{
$position -= $gobackn;
suffix($position, preg_replace("/^[0-9]{13},([0-9]{2,5})$/", "\\1", $barcode));
}
header('Content-type: image/png'); //send image-header
ImagePNG($image);
ImageDestroy($image);
}
elseif (preg_match("/^[0-9]{8}(,[0-9]{2,5})?$/", $barcode) && ($coding == 'DWIM' || $coding == 'EAN-8')) //if correct EAN-8-code
{
if (strlen($barcode) == 8)
{ CreateImage(67, 62 + $dispcod); }
elseif (strlen($barcode) == 11)
{ CreateImage(94, 62 + $dispcod); }
elseif (strlen($barcode) == 14)
{ CreateImage(130, 62 + $dispcod); }
//draw numbers
ImageString($image, 3, 4, 50 + $dispcod, substr($barcode, 0, 4), $black);
ImageString($image, 3, 36, 50 + $dispcod, substr($barcode, 4, 4), $black);
if ($dispcod) { ImageString($image, 3, 17, 0, 'EAN-8', $black); }
//draw guard bars
ImageLine($image, 0, $dispcod, 0, 62 + $dispcod, $black);
ImageLine($image, 2, $dispcod, 2, 62 + $dispcod, $black);
ImageLine($image, 32, $dispcod, 32, 62 + $dispcod, $black);
ImageLine($image, 34, $dispcod, 34, 62 + $dispcod, $black);
ImageLine($image, 64, $dispcod, 64, 62 + $dispcod, $black);
ImageLine($image, 66, $dispcod, 66, 62 + $dispcod, $black);
$position = 3; //start drawing bars at x = 3;
for ($digit = 0; $digit <= 3; $digit++)
{
for ($offset = 0; $offset < 7; $offset++)
{
$color = substr($a[$barcode[$digit]], $offset, 1); //$a contains left-A spaces/bars
$color = ($color == '1' ? $black : $white);
ImageLine($image, $position, $dispcod, $position, 50 + $dispcod, $color);
$position++;
}
}
$position += 5;
for ($digit = 4; $digit <= 7; $digit++)
{
for ($offset = 0; $offset < 7; $offset++)
{
$color = substr($right[$barcode[$digit]], $offset, 1);
$color = ($color == '1' ? $black : $white);
ImageLine($image, $position, $dispcod, $position, 50 + $dispcod, $color);
$position++;
}
}
if (preg_match("/,[0-9]{2,5}$/", $barcode))
{
suffix($position, preg_replace("/^[0-9]{8},([0-9]{2,5})$/", "\\1", $barcode));
}
header('Content-type: image/png'); //send image-header
ImagePNG($image);
ImageDestroy($image);
}
elseif (preg_match("/^[01][0-9]{7}(,[0-9]{2,5})?$/", $barcode) && ($coding == 'UPC-E')) //if correct UPC-E-code (DWIM not included => EAN-8)
{
if (strlen($barcode) == 8)
{ CreateImage(69, 62 + $dispcod); }
elseif (strlen($barcode) == 11)
{ CreateImage(95, 62 + $dispcod); }
elseif (strlen($barcode) == 14)
{ CreateImage(131, 62 + $dispcod); }
//draw numbers
ImageString($image, 3, 2, 30 + $dispcod, substr($barcode, 0, 1), $black);
ImageString($image, 3, 14, 50 + $dispcod, substr($barcode, 1, 6), $black);
if ($dispcod) { ImageString($image, 3, 18, 0, 'UPC-E', $black); }
ImageString($image, 3, 63, 30 + $dispcod, substr($barcode, 7, 1), $black);
//draw guard bars
ImageLine($image, 10, $dispcod, 10, 62 + $dispcod, $black);
ImageLine($image, 12, $dispcod, 12, 62 + $dispcod, $black);
ImageLine($image, 56, $dispcod, 56, 62 + $dispcod, $black);
ImageLine($image, 58, $dispcod, 58, 62 + $dispcod, $black);
ImageLine($image, 60, $dispcod, 60, 62 + $dispcod, $black);
$position = 13; //start drawing bars at x = 3;
if ($barcode[0] == '0' || $barcode[0] == '1') //UPC-E can only start with 0 or 1
{
for ($digit = 1; $digit <= 6; $digit++) //first digit is encoded in next six
{
$color = $UPCE[$barcode[7]];
$color = substr($color, $digit - 1, 1);
if ($barcode[0] == '1') //aaabbb => bbbaaa, see docs.txt
{
$color = ($color == 'a' ? 'b' : 'a');
}
$color = ${$color};
$color = $color[$barcode[$digit]];
for ($offset = 0; $offset < 7; $offset++)
{
ImageLine($image, $position, $dispcod, $position, 50 + $dispcod, (substr($color, $offset, 1) == '1' ? $black : $white));
$position++;
}
}
}
if (preg_match("/,[0-9]{2,5}$/", $barcode))
{
$position += 10;
suffix($position, preg_replace("/^[0-9]{8},([0-9]{2,5})$/", "\\1", $barcode));
}
header('Content-type: image/png'); //send image-header
ImagePNG($image);
ImageDestroy($image);
}
elseif ((($override && preg_match("/^[0-9A-Z\-\.\$\/+% ]{1,48}$/i", $barcode)) || preg_match("/^\*[0-9A-Z\-\.\$\/+% ]{1,48}\*$/i", $barcode)) && ($coding == 'DWIM' || $coding == 'Code 39'))
{
$barcode = strtoupper($barcode); //can only use capital letters
CreateImage(13 * strlen($barcode), 62 + $dispcod);
//draw numbers
if ($dispcod && strlen($barcode) > 3) //otherwise, 'Code 39' would be too large to fit in the image
{ ImageString($image, 3, 6.5 * strlen($barcode) - 25, 0, 'Code 39', $black); }
$position = 0; //start drawing bars at x = 0;
for ($digit = 0; $digit <= strlen($barcode) - 1; $digit++)
{
//draw number/letter
ImageString($image, 3, $position + 3, 50 + $dispcod, $barcode[$digit], $black);
for ($offset = 0; $offset < 12; $offset++)
{
$color = substr($code39[$barcode[$digit]], $offset, 1);
$color = ($color == '1' ? $black : $white);
ImageLine($image, $position, $dispcod, $position, 50 + $dispcod, $color);
$position++;
}
ImageLine($image, $position, $dispcod, $position, 50 + $dispcod, $white); //every letter ends with a space
$position++;
}
header('Content-type: image/png'); //send image-header
ImagePNG($image);
ImageDestroy($image);
}
elseif (preg_match("/^([ABCD])[0-9\-\$:\/\.\+]{1,48}\\1$/i", $barcode) && ($coding == 'DWIM' || $coding == 'Codabar'))
{
$length = -1; //final whitespace should be left out
for ($digit = 0; $digit < strlen($barcode); $digit++)
{
$length += strlen($codabar[$barcode[$digit]]);
$length += 1; //extra space after every digit
}
CreateImage($length, 62 + $dispcod);
//draw coding
if ($dispcod && $length > 47) //otherwise, 'Codabar' would be to large to fit in the image
{ ImageString($image, 3, $length / 2 - 22, 0, 'Codabar', $black); }
$position = 0; //start drawing bars at x = 0;
for ($digit = 0; $digit < strlen($barcode); $digit++)
{
//draw number/letter
ImageString($image, 3, $position + 3, 50 + $dispcod, $barcode[$digit], $black);
for ($offset = 0; $offset < strlen($codabar[$barcode[$digit]]); $offset++)
{
$color = substr($codabar[$barcode[$digit]], $offset, 1);
$color = ($color == '1' ? $black : $white);
ImageLine($image, $position, $dispcod, $position, 50 + $dispcod, $color);
$position++;
}
ImageLine($image, $position, $dispcod, $position, 50 + $dispcod, $white); //every letter ends with a space
$position++;
}
header('Content-type: image/png'); //send image-header
ImagePNG($image);
ImageDestroy($image);
}
elseif ((($override && preg_match("/^[a-z0-9]{1,50}$/i", $barcode)) || preg_match("/^[0-9]{4}[a-z]{2}[0-9]{0,5}($|X[a-z0-9]{0,6}|[0-9]{1,5})$/i", $barcode)) && ($coding == 'DWIM' || $coding == 'KIX'))
{
#breedte streepje: 2 pixels, breedte witruimte: 2 pixels
#hoogte synchronisatiestreep 5 pixels
#hoogte rest streepje 7 pixels
$barcode = strtoupper($barcode); //$kix only contains the uppercase alphabet
CreateImage(strlen($barcode) * 16, 19 + $dispcod);
//draw numbers
if ($dispcod && strlen($barcode) > 0) //otherwise, 'KIX' would be to large to fit in the image
{ ImageString($image, 3, strlen($barcode) * 16 / 2 - 11, 0, 'KIX', $black); }
$position = 0;
for($digit = 0; $digit < strlen($barcode); $digit++)
{
for ($offset = 0; $offset < 4; $offset++)
{
switch($kix[$barcode[$digit]][$offset])
{
case 'm':
ImageLine($image, $position, 7 + $dispcod, $position, 11 + $dispcod, $black);
ImageLine($image, $position + 1, 7 + $dispcod, $position + 1, 11 + $dispcod, $black);
break;
case 'b':
ImageLine($image, $position, 7 + $dispcod, $position, 18 + $dispcod, $black);
ImageLine($image, $position + 1, 7 + $dispcod, $position + 1, 18 + $dispcod, $black);
break;
case 't':
ImageLine($image, $position, $dispcod, $position, 11 + $dispcod, $black);
ImageLine($image, $position + 1, $dispcod, $position + 1, 11 + $dispcod, $black);
break;
case 'w':
ImageLine($image, $position, $dispcod, $position, 18 + $dispcod, $black);
ImageLine($image, $position + 1, $dispcod, $position + 1, 18 + $dispcod, $black);
break;
}
$position += 4;
}
}
header('Content-type: image/png'); //send image-header
ImagePNG($image);
ImageDestroy($image);
}
elseif (preg_match("/^(\d\d)+$/", $_GET['barcode']) && ($coding == 'DWIM' || $coding == '128C'))
{
$barcode = 'ST'.$_GET['barcode'].'OP'; //include START and STOP-bars
CreateImage(strlen($barcode) * 11 / 2 + 2, 42 + $dispcod); //11 pixels per 2 digits, except for the last one, which has 13 (11 + 2)
if ($dispcod)
{ ImageString($image, 3, strlen($barcode) * 11 / 4 - 11, 0, '128C', $black); }
$pos = 0;
//draw bars (including START and STOP)
for ($digit = 0; $digit < strlen($barcode); $digit += 2)
{
$bars = $bar128c[substr($barcode, $digit, 2)]; //something like '113141' (BWBWBW)
for ($bar = 0; $bar < strlen($bars); $bar++)
{
for ($counter = 0; $counter < substr($bars, $bar, 1); $counter++)
{ ImageLine($image, $pos, $dispcod, $pos++, 42 + $dispcod, ($bar % 2 ? $white : $black)); }
}
}
header('Content-type: image/png'); //send image-header
ImagePNG($image);
ImageDestroy($image);
}
else
{
if ($coding == 'DWIM')
{ echoHTML($title, "\n <font color=\"#ff0000\">Sorry, the barcode was not recognized!</font><br /><br />"); }
elseif ($coding == 'UPC-A')
{ echoHTML($title, "\n <font color=\"#ff0000\">Sorry, the barcode was not recognized as UPC-A!<br />\n UPC-A consists of 12 digits.</font><br /><br />"); }
elseif ($coding == 'UPC-E')
{ echoHTML($title, "\n <font color=\"#ff0000\">Sorry, the barcode was not recognized as UPC-E!<br />\n UPC-E consists of 8 digits, from which the first is either a 0 or a 1.</font><br /><br />"); }
elseif ($coding == 'EAN-13')
{ echoHTML($title, "\n <font color=\"#ff0000\">Sorry, the barcode was not recognized as EAN-13!<br />\n EAN-13 consists of 13 digits.</font><br /><br />"); }
elseif ($coding == 'EAN-8')
{ echoHTML($title, "\n <font color=\"#ff0000\">Sorry, the barcode was not recognized as EAN-8!<br />\n EAN-8 consists of 8 digits.</font><br /><br />"); }
elseif ($coding == 'Code 39')
{ echoHTML($title, "\n <font color=\"#ff0000\">Sorry, the barcode was not recognized as Code 39!<br />\n Code 39 starts and ends with an asterisk (*), and<br />\n can only contain numbers, capitals and -. $/+%</font><br /><br />"); }
elseif ($coding == 'Codabar')
{ echoHTML($title, "\n <font color=\"#ff0000\">Sorry, the barcode was not recognized as Codabar!<br />\n Codabar starts and ends with an A, B, C or D, and<br />\n can only contain mubers and -$:/.+</font><br /><br />"); }
elseif ($coding == 'KIX')
{ echoHTML($title, "\n <font color=\"#ff0000\">Sorry, the barcode was not recognized as KIX!<br />\n For information on KIX, please visit <a href=\"http://www.tpgpostbusiness.nl/kix/\">TPG Post</a>.</font><br /><br />"); }
elseif ($coding == '128C')
{ echoHTML($title, "\n <font color=\"#ff0000\">Sorry, the barcode was not recognized as 128C!<br />\n 128C-barcodes consist of an even number of digits.</font><br /><br />"); }
}
}
else
{ echoHTML($title, ''); }
// F U N C T I O N S
function echoHTML($title, $extra)
{
echo "<?xml version=\"1.1\" encoding=\"us-ascii\" ?>
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
<head>
<title>$title</title>
<style type=\"text/css\">
body
{ background-color: #cfcfcf;
color: #3f0000 }
p
{ display: inline; }
</style>
</head>
<body>
<p>$extra</p>
<form action=\"{$_SERVER['PHP_SELF']}\" method=\"get\">
<p>
<input type=\"text\" name=\"barcode\" value=\"Enter a barcode\" size=\"25\" maxlength=\"50\" />
<select name=\"coding\">
<option value=\"DWIM\" selected=\"selected\">Do What I Mean</option>
<option value=\"UPC-A\">UPC-A (US/Canada)</option>
<option value=\"UPC-E\">UPC-E (US/Canada)</option>
<option value=\"EAN-13\">EAN-13 (Europe/Japan)</option>
<option value=\"EAN-8\">EAN-8 (Europe/Japan)</option>
<option value=\"Code 39\">Code 39 (Text)</option>
<option value=\"Codabar\">Codabar</option>
<option value=\"KIX\">KIX</option>
<option value=\"128C\">128C</option>
</select>
<input type=\"submit\" value=\"Create image!\" /><br />
<input type=\"checkbox\" name=\"override\" />Override KIX or Code 39
<input type=\"checkbox\" name=\"dispcod\" checked=\"checked\" />Display coding in barcode
</p>
</form>
<hr />
<p>Copyright (©) 2002 Nieko Maatjes</p>
</body>
</html>";
}
function createImage($x, $y)
{
global $image;
global $white;
global $black;
$image = ImageCreate($x, $y); //create image
$white = ImageColorAllocate($image, 255, 255, 255); //define colors
$black = ImageColorAllocate($image, 0, 0, 0);
}
function suffix(&$position, $value) //draw supplemental barcodes
{
global $image;
global $black;
global $white;
global $a;
global $b;
global $UPCE;
global $dispcod;
if (strlen($value) == 2) //suffix can only be 2 or 5 digits wide
{
$position += 10; //leave a gap 7 bars wide, and skip 3 guard bars => 10
ImageLine($image, $position, 12 + $dispcod, $position, 62 + $dispcod, $black);
ImageLine($image, $position + 2, 12 + $dispcod, $position + 2, 62 + $dispcod, $black);
ImageLine($image, $position + 3, 12 + $dispcod, $position + 3, 62 + $dispcod, $black);
ImageString($image, 3, $position + 5, $dispcod, $value, $black);
$position += 4;
switch (((int)$value) % 4)
{
case 0: $parity = 'aa'; break;
case 1: $parity = 'ab'; break;
case 2: $parity = 'ba'; break;
case 3: $parity = 'bb'; break;
}
for ($digit = 0; $digit <= 1; $digit++)
{
for ($offset = 0; $offset < 7; $offset++)
{
$color = substr($parity, $digit, 1);
$color = ${$color};
$color = $color[substr($value, $digit, 1)];
$color = substr($color, $offset, 1);
$color = ($color == '1' ? $black : $white);
ImageLine($image, $position, 12 + $dispcod, $position, 62 + $dispcod, $color);
$position++;
}
if ($digit == 0) //draw guardbar '01'
{ $position++; ImageLine($image, $position, 12 + $dispcod, $position, 62 + $dispcod, $black); $position++; }
}
}
elseif (strlen($value) == 5)
{
$position += 10; //leave a gap 7 bars wide, and skip 3 guard bars => 10
ImageLine($image, $position, 12 + $dispcod, $position, 62 + $dispcod, $black);
ImageLine($image, $position + 2, 12 + $dispcod, $position + 2, 62 + $dispcod, $black);
ImageLine($image, $position + 3, 12 + $dispcod, $position + 3, 62 + $dispcod, $black);
ImageString($image, 3, $position + 12, $dispcod, $value, $black);
$position += 4;
$parity = ((int)substr($value, 0, 1) + (int)substr($value, 2, 1) + (int)substr($value, 4, 1)) * 3;
$parity += ((int)substr($value, 1, 1) + (int)substr($value, 3, 1)) * 9;
$parity = $parity % 10;
$parity = $UPCE[$parity];
for ($digit = 0; $digit <= 5; $digit++)
{
for ($offset = 0; $offset < 7; $offset++)
{
$color = substr($parity, $digit, 1);
$color = ${$color};
$color = $color[substr($value, $digit, 1)];
$color = substr($color, $offset, 1);
$color = ($color == '1' ? $black : $white);
ImageLine($image, $position, 12 + $dispcod, $position, 62 + $dispcod, $color);
$position++;
}
if ($digit < 5) //draw guardbar '01'
{ $position++; ImageLine($image, $position, 12 + $dispcod, $position, 62 + $dispcod, $black); $position++; }
}
}
}
?>
[/code]
Reacties
0