Programación Web y Scripting > PHP

 Generar y guardar codigos de barras en postgres

(1/2) > >>

jonathanperez:
Amigos del foro recurro a ustedes en esta oportunidad de solicitar de su colaboración con simple código de generar un codigo de barras, lo cual ya logre y muestra perfectamente......pero no logro hacer como guardarlo es decir quiero que guarde solo la imagen creada en la base de datos de postgres.

este es mi codigo:

para generar el codigo de barras:

<?php

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";
        }
}


?>



para mostrar las imagenes generadas es este:

<IMG SRC="barcode.php?barcode=<? echo $seriallotes;?>&width=280&height=80">

yo le estoy pasando los valores del codigo por get, y esta funcionando muy bien pero no logro guardarlos

espero puedan ayudarme.

saludos.

DriverOp:
Supongo que con "guardarlos" te refieres a guardar el código de barras generado como un archivo de imagen.
En las funciones ImageXXX (donde XXX puede ser jpeg, gif o png) agrega en el segundo parámetro un nombre de archivo que será donde se guardará la imagen. Además tienes que quitar el primer switch que está justo al inicio de la función Barcode39.

jonathanperez:
ok GRacias por responder, pero cuando me dices que agregue un segundo parametro para guardar el archivo te refieres a asignar un nombre es decir algo como esto:

$origen="http://localhost/consignaciones/barcode.php?barcode=$seriallotes&width=280&height=80";
$tipo_archivo="png";
$punto=".";
$nuevo_archivo=$seriallotes.$punto.$tipo_archivo;
$destino= '/var/www/consignaciones/sub_imagenes/'.$nuevo_archivo;
if (copy($origen, $destino)) {
   echo "Imagen guardada";
}else{
   echo "No se ha guardado la imagen.";
}

esto me funciona para guardar las imágenes en una carpeta pero yo quiero meterlas como un registro en la base de datos luego llamarla cuando este generando el reporte.

DriverOp:
Como no sé nada de Postgres, no sabría decirte cómo hacer lo que quieres, pero si pudiste guardar los códigos de barras como imágenes en archivos y suponiendo que Postgres tiene algún tipo de campo donde puedas almacenar rastras de bytes, supongo que no será difícil meter la imagen en la base de datos.

F_Tanori:
Investiga  sobre blob en pg

http://www.google.com.mx/#hl=es&source= ... d7e5088447

Saludos

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa