Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/09/2013, 04:23
MiguelNajdorf
 
Fecha de Ingreso: septiembre-2009
Mensajes: 39
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta modificar generador de códigos de barra code39

Hola gente, estoy haciendo un programita y si bien es una pavada que no afecta al buen funcionamiento, me gustaría modificarlo para un mejor uso de mi cliente.

el código generador de código de barras es barcode.php y consta de lo siguiente:
Código PHP:
<?php

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


if (!isset (
$text)) $text 0;
if (!isset (
$type)) $type 1;
if (empty (
$quality)) $quality 100;
if (empty (
$width)) $width 330;
if (empty (
$height)) $height 60;
if (!empty (
$format)) $format strtoupper ($format);
        else 
$format="PNG";


switch (
$type)
{
        default:
                
$type 1;
        case 
1:
                
Barcode39 ($barcode$width$height$quality$format$text);
                break;          
}

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 ($im255255255);
        
$Black ImageColorAllocate ($im000);
        
//ImageColorTransparent ($im, $White);
        
ImageInterLace ($im1);



        
$NarrowRatio 20;
        
$WideRatio 55;
        
$QuietRatio 35;


        
$nChars = (strlen($barcode)+2) * (($NarrowRatio) + ($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 ($im100"Image is too small!"$Black);
                
OutputImage ($im$format$quality);
                exit;
        }
        
        
$CurrentBarX = (int)(($width $ActualWidth) / 2);
        
$Color $Red;
        
$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$CurrentBarX0$CurrentBarX+$NarrowBar$height-1-$FontHeight-2$Color);
                                        
$CurrentBarX += $NarrowBar;
                                        break;


                                case 
'1':
                                        
ImageFilledRectangle ($im$CurrentBarX0$CurrentBarX+$WideBar$height-1-$FontHeight-2$Color);
                                        
$CurrentBarX += $WideBar;
                                        break;
                        }
                }


                
$Color $White;
                
ImageFilledRectangle ($im$CurrentBarX0$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"
        }
}


?>
la llamada se hace sencillamente con un:

Código PHP:
<?php
            
while ($row mysql_fetch_array($sql)) {
                
?>
                <br>Código: <span id="muestraDatos"><?php echo $row['CODIGO']; ?></span>
                <br>
                <?php
// inicio de código de código de barras
                
$num $row['CODIGO'];
                
?>
                <img src="includes/barcode.php?barcode=<?php echo $num ?>&quality=100&name='hola'">
el problema está en que cuando guardo la imagen generada, me la guarda como barcode.png y cuyo nombre es en funcion a la llamada del archivo barcode.php por lo cual si le pongo codigodebarra.php y lo llamo así, me genera la imagen con el nombre codigodebarra.png; lo que yo necesito es que el nombre sea el mismo que el $row['CODIGO'], que cambios debería hacer para que esto ocurra?? Gracias.