This topic is locked

create Barcode with addtional information

9/22/2011 4:47:59 PM
PHPRunner General questions
author

hi guys succeed to create bar-code with extra definition however second line doesn't show up clearly on the image


i am using this bar-code generator and i modified the code

second description line doesn't fit with the image size can you guys help me how can i re-size image thanks.
<?php

/===========================================================================/

/ PHP Barcode Image Generator v1.0 [9/28/2000]

Copyright (C)2000 by Charles J. Scheffold - cs@sid6581.net
---

UPDATE 5/10/2005 by C.Scheffold

Changed FontHeight to -2 if no text is to be displayed (this eliminates

the whitespace at the bottom of the image)

---

UPDATE 03/12/2005 by C.Scheffold

Added '-' character to translation table

---

UPDATE 09/21/2002 by Laurent NAVARRO - ln@altidev.com - http://www.altidev.com

Updated to be compatible with register_globals = off and on

---

UPDATE 4/6/2001 - Important Note! This script was written with the assumption

that "register_globals = On" is defined in your PHP.INI file! It will not

work as-is and as described unless this is set. My PHP came with this

enabled by default, but apparently many people have turned it off. Either

turn it on or modify the startup code to pull the CGI variables in the old

fashioned way (from the HTTP
arrays). If you just want to use the functions

and pass the variables yourself, well then go on with your bad self.

---
This code is hereby released into the public domain.

Use it, abuse it, just don't get caught using it for something stupid.
The only barcode type currently supported is Code 3 of 9. Don't ask about

adding support for others! This is a script I wrote for my own use. I do

plan to add more types as time permits but currently I only require

Code 3 of 9 for my purposes. Just about every scanner on the market today

can read it.
PARAMETERS:

-----------

$barcode = [required] The barcode you want to generate
$type = (default=0) It's 0 for Code 3 of 9 (the only one supported)
$width = (default=160) Width of image in pixels. The image MUST be wide

enough to handle the length of the given value. The default

value will probably be able to display about 6 digits. If you

get an error message, make it wider!
$height = (default=80) Height of image in pixels
$format = (default=jpeg) Can be "jpeg", "png", or "gif"
$quality = (default=100) For JPEG only: ranges from 0-100
$text = (default=1) 0 to disable text below barcode, >=1 to enable
NOTE: You must have GD-1.8 or higher compiled into PHP

in order to use PNG and JPEG. GIF images only work with

GD-1.5 and lower. (http://www.boutell.com)
ANOTHER NOTE: If you actually intend to print the barcodes

and scan them with a scanner, I highly recommend choosing

JPEG with a quality of 100. Most browsers can't seem to print

a PNG without mangling it beyond recognition.
USAGE EXAMPLES FOR ANY PLAIN OLD HTML DOCUMENT:

-----------------------------------------------
<IMG SRC="barcode.php?barcode=HELLO&quality=75">
<IMG SRC="barcode.php?barcode=123456&width=320&height=200">
/

/
=============================================================================/
//-----------------------------------------------------------------------------

// Startup code

//-----------------------------------------------------------------------------
if(isset($_REQUEST["text"])) $text=$_REQUEST["text"];

if(isset($_REQUEST["format"])) $format=$_REQUEST["format"];

if(isset($_REQUEST["quality"])) $quality=$_REQUEST["quality"];

if(isset($_REQUEST["width"])) $width=$_REQUEST["width"];

if(isset($_REQUEST["height"])) $height=$_REQUEST["height"];

if(isset($_REQUEST["type"])) $type=$_REQUEST["type"];

if(isset($_REQUEST["barcode"])) $barcode=$_REQUEST["barcode"];

;

if(isset($_REQUEST["desc2"])) $desc2=$_REQUEST["desc2"];
if (!isset ($text)) $text = 1;

if (!isset ($desc)) $desc = '';

if (!isset ($desc2)) $desc2 = '';

if (!isset ($type)) $type = 1;

if (empty ($quality)) $quality = 100;

if (empty ($width)) $width = 160;

if (empty ($height)) $height = 80;

if (!empty ($format)) $format = strtoupper ($format);

else $format="PNG";
switch ($type)

{

default:

$type = 1;

case 1:

Barcode39 ($barcode, $width, $height, $quality, $format, $text,);

break;

}
//-----------------------------------------------------------------------------

// Generate a Code 3 of 9 barcode

//-----------------------------------------------------------------------------

function Barcode39 ($barcode, $width, $height, $quality, $format, $text, [color="#FF0000"]$desc, $desc2)

{

switch ($format)

{

default:

$format = "JPEG";

case "JPEG":

header ("Content-type: image/jpeg");

break;

case "PNG":

header ("Content-type: image/png");

break;

case "GIF":

header ("Content-type: image/gif");

break;

}
$im = ImageCreate ($width, $height)

or die ("Cannot Initialize new GD image stream");

$White = ImageColorAllocate ($im, 255, 255, 255);

$Black = ImageColorAllocate ($im, 0, 0, 0);

//ImageColorTransparent ($im, $White);

ImageInterLace ($im, 1);
$NarrowRatio = 30;

$WideRatio = 55;

$QuietRatio = 35;
$nChars = (strlen($barcode)+2)
((6 $NarrowRatio) + (3 $WideRatio) + (3 $QuietRatio));

$Pixels = $width / $nChars;

$NarrowBar = (int)(20
$Pixels);

$WideBar = (int)(55 $Pixels);

$QuietBar = (int)(35
$Pixels);
$ActualWidth = (($NarrowBar 6) + ($WideBar3) + $QuietBar) (strlen ($barcode)+2);
if (($NarrowBar == 0) || ($NarrowBar == $WideBar) || ($NarrowBar == $QuietBar) || ($WideBar == 0) || ($WideBar == $QuietBar) || ($QuietBar == 0))

{

ImageString ($im, 1, 0, 0, "Image is too small!", $Black);

OutputImage ($im, $format, $quality);

exit;

}
$CurrentBarX = (int)(($width - $ActualWidth) / 2);

$Color = $White;

$BarcodeFull = "
".strtoupper ($barcode)."";
settype ($BarcodeFull, "string");
$FontNum = 3;

$FontHeight = ImageFontHeight ($FontNum);

$FontWidth = ImageFontWidth ($FontNum);

if ($text != 0)

{

$CenterLoc = (int)(($width-1) / 2) - (int)(($FontWidth
strlen($BarcodeFull)) / 2);

$CenterLoc2 = (int)(($width-1) / 2) - (int)(($FontWidth strlen($desc)) / 2);

$CenterLoc3 = (int)(($width-1) / 2) - (int)(($FontWidth
strlen($desc2)) / 2);

ImageString ($im, $FontNum, $CenterLoc, $height-($FontHeight2), "$BarcodeFull", $Black);

ImageString ($im, $FontNum, $CenterLoc2, $height-($FontHeight
1), $desc, $Black);

ImageString ($im, $FontNum, $CenterLoc3, $height-($FontHeight/2), $desc2, $Black);

}

else

{

$FontHeight=-2;

}
for ($i=0; $i<strlen($BarcodeFull); $i++)

{

$StripeCode = Code39 ($BarcodeFull[$i]);
for ($n=0; $n < 9; $n++)

{

if ($Color == $White) $Color = $Black;

else $Color = $White;
switch ($StripeCode[$n])

{

case '0':

ImageFilledRectangle ($im, $CurrentBarX, 0, $CurrentBarX+$NarrowBar, $height-1-($FontHeight2)-2, $Color);

$CurrentBarX += $NarrowBar;

break;
case '1':

ImageFilledRectangle ($im, $CurrentBarX, 0, $CurrentBarX+$WideBar, $height-1-($FontHeight
2)-2, $Color);

$CurrentBarX += $WideBar;

break;

}

}
$Color = $White;

ImageFilledRectangle ($im, $CurrentBarX, 0, $CurrentBarX+$QuietBar, $height-1-($FontHeight2)-2, $Color);

$CurrentBarX += $QuietBar;

}
OutputImage ($im, $format, $quality);

}
//-----------------------------------------------------------------------------

// Output an image to the browser

//-----------------------------------------------------------------------------

function OutputImage ($im, $format, $quality)

{

switch ($format)

{

case "JPEG":

ImageJPEG ($im, "", $quality);

break;

case "PNG":

ImagePNG ($im);

break;

case "GIF":

ImageGIF ($im);

break;

}

}
//-----------------------------------------------------------------------------

// Returns the Code 3 of 9 value for a given ASCII character

//-----------------------------------------------------------------------------

function Code39 ($Asc)

{

switch ($Asc)

{

case ' ':

return "011000100";

case '$':

return "010101000";

case '%':

return "000101010";

case '
':

return "010010100"; // * Start/Stop

case '+':

return "010001010";

case '|':

return "010000101";

case '.':

return "110000100";

case '/':

return "010100010";

case '-':

return "010000101";

case '0':

return "000110100";

case '1':

return "100100001";

case '2':

return "001100001";

case '3':

return "101100000";

case '4':

return "000110001";

case '5':

return "100110000";

case '6':

return "001110000";

case '7':

return "000100101";

case '8':

return "100100100";

case '9':

return "001100100";

case 'A':

return "100001001";

case 'B':

return "001001001";

case 'C':

return "101001000";

case 'D':

return "000011001";

case 'E':

return "100011000";

case 'F':

return "001011000";

case 'G':

return "000001101";

case 'H':

return "100001100";

case 'I':

return "001001100";

case 'J':

return "000011100";

case 'K':

return "100000011";

case 'L':

return "001000011";

case 'M':

return "101000010";

case 'N':

return "000010011";

case 'O':

return "100010010";

case 'P':

return "001010010";

case 'Q':

return "000000111";

case 'R':

return "100000110";

case 'S':

return "001000110";

case 'T':

return "000010110";

case 'U':

return "110000001";

case 'V':

return "011000001";

case 'W':

return "111000000";

case 'X':

return "010010001";

case 'Y':

return "110010000";

case 'Z':

return "011010000";

default:

return "011000100";

}

}
?>