Jump to content

How to split & position dynamic images on page php


dlow128

Recommended Posts

 

This script uses mysql to generate a barcode and duplicates the image 10 times one underneath the other to produce what looks like a continious barcode. My problem is i need to separate the 10 images down the page to allow for a text area. Any ideas?

I appreciate any input, many thanks

 

<?php

 

mysql_connect("localhost", "root", "") or die(mysql_error());

mysql_select_db("test") or die(mysql_error());

 

$query = mysql_fetch_row(mysql_query("select codes from list order by rand() limit 1"));

 

    $barcodeheight=40;

    $barcodethinwidth=2;

    $barcodethickwidth=$barcodethinwidth*3;

    $codingmap  =  Array( "0"=> "000110100", "1"=> "100100001",

        "2"=> "001100001", "3"=> "101100000", "4"=> "000110001",

        "5"=> "100110000", "6"=> "001110000", "7"=> "000100101",

        "8"=> "100100100", "9"=> "001100100", "A"=> "100001001",

        "B"=> "001001001", "C"=> "101001000", "D"=> "000011001",

        "E"=> "100011000", "F"=> "001011000", "G"=> "000001101",

        "H"=> "100001100", "I"=> "001001100", "J"=> "000011100",

        "K"=> "100000011", "L"=> "001000011", "M"=> "101000010",

        "N"=> "000010011", "O"=> "100010010", "P"=> "001010010", 

        "Q"=> "000000111", "R"=> "100000110", "S"=> "001000110",

        "T"=> "000010110", "U"=> "110000001", "V"=> "011000001",

        "W"=> "111000000", "X"=> "010010001", "Y"=> "110010000",

        "Z"=> "011010000", " "=> "011000100", "$"=> "010101000",

        "%"=> "000101010", "*"=> "010010100", "+"=> "010001010",

        "-"=> "010000101", "."=> "110000100", "/"=> "010100010");

    $text  =  strtoupper($query[0]);

    $textlen  =  strlen($text);

    $barcodewidth  =  ($textlen)*(7*$barcodethinwidth + 3*$barcodethickwidth)-$barcodethinwidth;

    $im  =  ImageCreate($barcodewidth,$barcodeheight);

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

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

    imagefill($im,0,0,$white);

    $xpos=0;

    for  ($idx=0;$idx<$textlen;$idx++)  {

        $char  =  substr($text,$idx,1);

        // make  unknown  chars  a  '-';

        if  (!isset($codingmap[$char]))  $char  =  "-";

        for  ($baridx=0;$baridx<=8;$baridx++)  {

            $elementwidth  =  (substr($codingmap[$char],$baridx,1))  ? $barcodethickwidth : $barcodethinwidth;

            if  (($baridx+1)%2)  imagefilledrectangle($im,$xpos,0,$xpos + $elementwidth-1,$barcodeheight,$black);

            $xpos+=$elementwidth;

        }

        $xpos+=$elementwidth;

    }

// Duplication

  $barcodesRequired = 10;

$im2 = imageCreate($barcodewidth,$barcodeheight*$barcodesRequired);

for($x = 0; $x< $barcodesRequired; $x ++){

    imagecopy($im2,$im,0,$barcodeheight*$x,0,0,$barcodewidth,$barcodeheight);

}

 

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

ImageGif($im2);

ImageDestroy($im);

ImageDestroy($im2);

?>

 

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.