Jump to content

Barcode generation

- - - - -

This topic has been archived. This means that you cannot reply to this topic.
2 replies to this topic

#1
Divya

Divya

    Learning Programmer

  • Members
  • PipPipPip
  • 33 posts
I am doing an inventory control project and i want to create barcodes for the products in addition to the product details in a form.The form values should be submitted to the database to retrieve for future use.How to generate a barcode,how to load it in the database and retrieve it back.can i generate the barcode and submit the form with a single "submit" button?pls guide me in this issue.The following code is used to generate a barcode.i just dont know how to implement it in my form.

<?php

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

// Startup code

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



if(isset($_GET["text"])) $text=$_GET["text"];

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

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

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

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

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

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





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

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)

{

        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 = 20;

        $WideRatio = 55;

        $QuietRatio = 35;



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

        $Pixels = $width / $nChars;

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

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

        $QuietBar = (int)(35 * $Pixels);



        $ActualWidth = (($NarrowBar * 6) + ($WideBar*3) + $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);

                ImageString ($im, $FontNum, $CenterLoc, $height-$FontHeight, "$BarcodeFull", $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-$FontHeight-2, $Color);

                                        $CurrentBarX += $NarrowBar;

                                        break;



                                case '1':

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

                                        $CurrentBarX += $WideBar;

                                        break;

                        }

                }



                $Color = $White;

                ImageFilledRectangle ($im, $CurrentBarX, 0, $CurrentBarX+$QuietBar, $height-1-$FontHeight-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"; 

        }

}



?>


#2
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,831 posts
In the immortal words of many people I know: "A barcode is just a really ugly font". You just have to specify a barcode font and the start/termination characters and you're done.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#3
Guest_Jordan_*

Guest_Jordan_*
  • Guests
Yes, you need to have a form that contains these elements:

if(isset($_GET["text"])) $text=$_GET["text"];
if(isset($_GET["format"])) $format=$_GET["format"];
if(isset($_GET["quality"])) $quality=$_GET["quality"];
if(isset($_GET["width"])) $width=$_GET["width"];
if(isset($_GET["height"])) $height=$_GET["height"];
if(isset($_GET["type"])) $type=$_GET["type"];
if(isset($_GET["barcode"])) $barcode=$_GET["barcode"]; 

When you press the submit button it *can* generate the image (via your BarCode39 function) and submit the data to a database. You will need to add another function that connects and inserts data into a database though. I'm not sure if I understand your question though. Did I answer it or do you need help creating the form or is it something else completely?