Easily create Barcode using PHP Script

PHP is a most widely used scripting language in these days, so there are more tips and coding available in the internet to learn and code using the PHP language. Here i am going to show a PHP script which was use to generate the barcodes. Copy and paste this file as “barcode.php” before executing the html tag.

<?php
/*
* Usage:
* <img src=”/barcode.php?text=testing” alt=”testing” />
*/

// Get pararameters that are passed in through $_GET or set to the default value
$text = (isset($_GET[“text”])?$_GET[“text”]:”0″);
$size = (isset($_GET[“size”])?$_GET[“size”]:”20″);
$orientation = (isset($_GET[“orientation”])?$_GET[“orientation”]:”horizontal”);
$code_type = (isset($_GET[“codetype”])?$_GET[“codetype”]:”code128″);
$code_string = “”;
// Translate the $text into barcode the correct $code_type
if ( in_array(strtolower($code_type), array(“code128”, “code128b”)) ) {
$chksum = 104;
// Must not change order of array elements as the checksum depends on the array’s key to validate final code
$code_array = array(” “=>”212222″,”!”=>”222122″,”\””=>”222221″,”#”=>”121223″,”$”=>”121322″,”%”=>”131222″,”&”=>”122213″,”‘”=>”122312″,”(“=>”132212″,”)”=>”221213″,”*”=>”221312″,”+”=>”231212″,”,”=>”112232″,”-“=>”122132″,”.”=>”122231″,”/”=>”113222″,”0″=>”123122″,”1″=>”123221″,”2″=>”223211″,”3″=>”221132″,”4″=>”221231″,”5″=>”213212″,”6″=>”223112″,”7″=>”312131″,”8″=>”311222″,”9″=>”321122″,”:”=>”321221″,”;”=>”312212″,”<“=>”322112″,”=”=>”322211″,”>”=>”212123″,”?”=>”212321″,”@”=>”232121″,”A”=>”111323″,”B”=>”131123″,”C”=>”131321″,”D”=>”112313″,”E”=>”132113″,”F”=>”132311″,”G”=>”211313″,”H”=>”231113″,”I”=>”231311″,”J”=>”112133″,”K”=>”112331″,”L”=>”132131″,”M”=>”113123″,”N”=>”113321″,”O”=>”133121″,”P”=>”313121″,”Q”=>”211331″,”R”=>”231131″,”S”=>”213113″,”T”=>”213311″,”U”=>”213131″,”V”=>”311123″,”W”=>”311321″,”X”=>”331121″,”Y”=>”312113″,”Z”=>”312311″,”[“=>”332111″,”\\”=>”314111″,”]”=>”221411″,”^”=>”431111″,”_”=>”111224″,”\`”=>”111422″,”a”=>”121124″,”b”=>”121421″,”c”=>”141122″,”d”=>”141221″,”e”=>”112214″,”f”=>”112412″,”g”=>”122114″,”h”=>”122411″,”i”=>”142112″,”j”=>”142211″,”k”=>”241211″,”l”=>”221114″,”m”=>”413111″,”n”=>”241112″,”o”=>”134111″,”p”=>”111242″,”q”=>”121142″,”r”=>”121241″,”s”=>”114212″,”t”=>”124112″,”u”=>”124211″,”v”=>”411212″,”w”=>”421112″,”x”=>”421211″,”y”=>”212141″,”z”=>”214121″,”{“=>”412121″,”|”=>”111143″,”}”=>”111341″,”~”=>”131141″,”DEL”=>”114113″,”FNC 3″=>”114311″,”FNC 2″=>”411113″,”SHIFT”=>”411311″,”CODE C”=>”113141″,”FNC 4″=>”114131″,”CODE A”=>”311141″,”FNC 1″=>”411131″,”Start A”=>”211412″,”Start B”=>”211214″,”Start C”=>”211232″,”Stop”=>”2331112″);
$code_keys = array_keys($code_array);
$code_values = array_flip($code_keys);
for ( $X = 1; $X <= strlen($text); $X++ ) {
$activeKey = substr( $text, ($X-1), 1);
$code_string .= $code_array[$activeKey];
$chksum=($chksum + ($code_values[$activeKey] * $X));
}
$code_string .= $code_array[$code_keys[($chksum – (intval($chksum / 103) * 103))]];
$code_string = “211214” . $code_string . “2331112”;
} elseif ( strtolower($code_type) == “code128a” ) {
$chksum = 103;
$text = strtoupper($text); // Code 128A doesn’t support lower case
// Must not change order of array elements as the checksum depends on the array’s key to validate final code
$code_array = array(” “=>”212222″,”!”=>”222122″,”\””=>”222221″,”#”=>”121223″,”$”=>”121322″,”%”=>”131222″,”&”=>”122213″,”‘”=>”122312″,”(“=>”132212″,”)”=>”221213″,”*”=>”221312″,”+”=>”231212″,”,”=>”112232″,”-“=>”122132″,”.”=>”122231″,”/”=>”113222″,”0″=>”123122″,”1″=>”123221″,”2″=>”223211″,”3″=>”221132″,”4″=>”221231″,”5″=>”213212″,”6″=>”223112″,”7″=>”312131″,”8″=>”311222″,”9″=>”321122″,”:”=>”321221″,”;”=>”312212″,”<“=>”322112″,”=”=>”322211″,”>”=>”212123″,”?”=>”212321″,”@”=>”232121″,”A”=>”111323″,”B”=>”131123″,”C”=>”131321″,”D”=>”112313″,”E”=>”132113″,”F”=>”132311″,”G”=>”211313″,”H”=>”231113″,”I”=>”231311″,”J”=>”112133″,”K”=>”112331″,”L”=>”132131″,”M”=>”113123″,”N”=>”113321″,”O”=>”133121″,”P”=>”313121″,”Q”=>”211331″,”R”=>”231131″,”S”=>”213113″,”T”=>”213311″,”U”=>”213131″,”V”=>”311123″,”W”=>”311321″,”X”=>”331121″,”Y”=>”312113″,”Z”=>”312311″,”[“=>”332111″,”\\”=>”314111″,”]”=>”221411″,”^”=>”431111″,”_”=>”111224″,”NUL”=>”111422″,”SOH”=>”121124″,”STX”=>”121421″,”ETX”=>”141122″,”EOT”=>”141221″,”ENQ”=>”112214″,”ACK”=>”112412″,”BEL”=>”122114″,”BS”=>”122411″,”HT”=>”142112″,”LF”=>”142211″,”VT”=>”241211″,”FF”=>”221114″,”CR”=>”413111″,”SO”=>”241112″,”SI”=>”134111″,”DLE”=>”111242″,”DC1″=>”121142″,”DC2″=>”121241″,”DC3″=>”114212″,”DC4″=>”124112″,”NAK”=>”124211″,”SYN”=>”411212″,”ETB”=>”421112″,”CAN”=>”421211″,”EM”=>”212141″,”SUB”=>”214121″,”ESC”=>”412121″,”FS”=>”111143″,”GS”=>”111341″,”RS”=>”131141″,”US”=>”114113″,”FNC 3″=>”114311″,”FNC 2″=>”411113″,”SHIFT”=>”411311″,”CODE C”=>”113141″,”CODE B”=>”114131″,”FNC 4″=>”311141″,”FNC 1″=>”411131″,”Start A”=>”211412″,”Start B”=>”211214″,”Start C”=>”211232″,”Stop”=>”2331112″);
$code_keys = array_keys($code_array);
$code_values = array_flip($code_keys);
for ( $X = 1; $X <= strlen($text); $X++ ) {
$activeKey = substr( $text, ($X-1), 1);
$code_string .= $code_array[$activeKey];
$chksum=($chksum + ($code_values[$activeKey] * $X));
}
$code_string .= $code_array[$code_keys[($chksum – (intval($chksum / 103) * 103))]];
$code_string = “211412” . $code_string . “2331112”;
} elseif ( strtolower($code_type) == “code39” ) {
$code_array = array(“0″=>”111221211″,”1″=>”211211112″,”2″=>”112211112″,”3″=>”212211111″,”4″=>”111221112″,”5″=>”211221111″,”6″=>”112221111″,”7″=>”111211212″,”8″=>”211211211″,”9″=>”112211211″,”A”=>”211112112″,”B”=>”112112112″,”C”=>”212112111″,”D”=>”111122112″,”E”=>”211122111″,”F”=>”112122111″,”G”=>”111112212″,”H”=>”211112211″,”I”=>”112112211″,”J”=>”111122211″,”K”=>”211111122″,”L”=>”112111122″,”M”=>”212111121″,”N”=>”111121122″,”O”=>”211121121″,”P”=>”112121121″,”Q”=>”111111222″,”R”=>”211111221″,”S”=>”112111221″,”T”=>”111121221″,”U”=>”221111112″,”V”=>”122111112″,”W”=>”222111111″,”X”=>”121121112″,”Y”=>”221121111″,”Z”=>”122121111″,”-“=>”121111212″,”.”=>”221111211″,” “=>”122111211″,”$”=>”121212111″,”/”=>”121211121″,”+”=>”121112121″,”%”=>”111212121″,”*”=>”121121211”);
// Convert to uppercase
$upper_text = strtoupper($text);
for ( $X = 1; $X<=strlen($upper_text); $X++ ) {
$code_string .= $code_array[substr( $upper_text, ($X-1), 1)] . “1”;
}
$code_string = “1211212111” . $code_string . “121121211”;
} elseif ( strtolower($code_type) == “code25” ) {
$code_array1 = array(“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″,”0”);
$code_array2 = array(“3-1-1-1-3″,”1-3-1-1-3″,”3-3-1-1-1″,”1-1-3-1-3″,”3-1-3-1-1″,”1-3-3-1-1″,”1-1-1-3-3″,”3-1-1-3-1″,”1-3-1-3-1″,”1-1-3-3-1”);
for ( $X = 1; $X <= strlen($text); $X++ ) {
for ( $Y = 0; $Y < count($code_array1); $Y++ ) {
if ( substr($text, ($X-1), 1) == $code_array1[$Y] )
$temp[$X] = $code_array2[$Y];
}
}
for ( $X=1; $X<=strlen($text); $X+=2 ) {
if ( isset($temp[$X]) && isset($temp[($X + 1)]) ) {
$temp1 = explode( “-“, $temp[$X] );
$temp2 = explode( “-“, $temp[($X + 1)] );
for ( $Y = 0; $Y < count($temp1); $Y++ )
$code_string .= $temp1[$Y] . $temp2[$Y];
}
}
$code_string = “1111” . $code_string . “311”;
} elseif ( strtolower($code_type) == “codabar” ) {
$code_array1 = array(“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″,”0″,”-“,”$”,”:”,”/”,”.”,”+”,”A”,”B”,”C”,”D”);
$code_array2 = array(“1111221″,”1112112″,”2211111″,”1121121″,”2111121″,”1211112″,”1211211″,”1221111″,”2112111″,”1111122″,”1112211″,”1122111″,”2111212″,”2121112″,”2121211″,”1121212″,”1122121″,”1212112″,”1112122″,”1112221”);
// Convert to uppercase
$upper_text = strtoupper($text);
for ( $X = 1; $X<=strlen($upper_text); $X++ ) {
for ( $Y = 0; $Y<count($code_array1); $Y++ ) {
if ( substr($upper_text, ($X-1), 1) == $code_array1[$Y] )
$code_string .= $code_array2[$Y] . “1”;
}
}
$code_string = “11221211” . $code_string . “1122121”;
}
// Pad the edges of the barcode
$code_length = 20;
for ( $i=1; $i <= strlen($code_string); $i++ )
$code_length = $code_length + (integer)(substr($code_string,($i-1),1));
if ( strtolower($orientation) == “horizontal” ) {
$img_width = $code_length;
$img_height = $size;
} else {
$img_width = $size;
$img_height = $code_length;
}
$image = imagecreate($img_width, $img_height);
$black = imagecolorallocate ($image, 0, 0, 0);
$white = imagecolorallocate ($image, 255, 255, 255);
imagefill( $image, 0, 0, $white );
$location = 10;
for ( $position = 1 ; $position <= strlen($code_string); $position++ ) {
$cur_size = $location + ( substr($code_string, ($position-1), 1) );
if ( strtolower($orientation) == “horizontal” )
imagefilledrectangle( $image, $location, 0, $cur_size, $img_height, ($position % 2 == 0 ? $white : $black) );
else
imagefilledrectangle( $image, 0, $location, $img_width, $cur_size, ($position % 2 == 0 ? $white : $black) );
$location = $cur_size;
}
// Draw barcode to the screen
header (‘Content-type: image/png’);
imagepng($image);
imagedestroy($image);
?>

You need to use the following codes to create your barcode in different types.

<img src=”/barcode.php?text=testing” alt=”testing” />

or use the following code but before executing the code place the barcode file inside the “code” folder and then execute the html tag.

<img alt=”testing” src=”/code/barcode.php” />

<img alt=”testing” src=”/code/barcode.php?text=testing” />

<img alt=”TESTING” src=”/code/barcode.php?codetype=Code39&size=40&text=TESTING” />

<img alt=”12345″ src=”/code/barcode.php?codetype=Code25&size=40&text=12345″ />

<img alt=”123ABC” src=”/code/barcode.php?codetype=Codabar&size=40&text=123ABC” />

<img alt=”The Real David Tufts” src=”/code/barcode.php?text=The%20Real%20David%20Tufts&orientation=vertical&size=40″ />

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

14 − 4 =