Autor Tema: Ayuda para leer código de barras con PHP desde una imágen  (Leído 13863 veces)

misterhch

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Ayuda para leer código de barras con PHP desde una imágen
« en: 12 de Septiembre 2014, 21:26 »
Buenas Tardes.

Gracias de antemano por las respuestas a la pregunta anterior en esta ocasión solicito apoyo para leer el o los códigos de barras que tiene una imagen y poder extraer la información.

Agradezco si adicionalmente alguien sabe como leer información de una imagen con php aparte de un código de barras en la imagen
« Última modificación: 12 de Septiembre 2014, 21:46 por misterhch »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Ayuda para leer código de barras con PHP desde una imágen
« Respuesta #1 en: 13 de Septiembre 2014, 12:01 »
Hola, sobre la pregunta anterior lo mejor es que respondas donde estaba la pregunta anterior, así quien te respondió sabrá que lo leíste y está bien al menos dar las gracias por la ayuda... Porque a lo mejor quien te respondió no lee este post ni sabe a qué te refieres con "la pregunta anterior"  ::)

Sobre leer la información de un código de barras no estoy seguro de cómo hacerlo directamente con php, puedes hacerlo con JavaScript y enviar la información al servidor como si fueran los datos de un formulario.

Código JavaScript:

Código: [Seleccionar]
/*
 *    Copyright (c) 2010 Tobias Schneider
 *    This script is freely distributable under the terms of the MIT license.
 */

(function(){
    var UPC_SET = {
        "3211": '0',
        "2221": '1',
        "2122": '2',
        "1411": '3',
        "1132": '4',
        "1231": '5',
        "1114": '6',
        "1312": '7',
        "1213": '8',
        "3112": '9'
    };
   
    getBarcodeFromImage = function(imgOrId){
        var doc = document,
            img = "object" == typeof imgOrId ? imgOrId : doc.getElementById(imgOrId),
            canvas = doc.createElement("canvas"),
            ctx = canvas.getContext("2d"),
            width = img.width,
            height = img.height,
            spoints = [1, 9, 2, 8, 3, 7, 4, 6, 5],
            numLines = spoints.length,
            slineStep = height / (numLines + 1);
        canvas.width = width;
        canvas.height = height;
        ctx.drawImage(img, 0, 0);
        while(numLines--){
            console.log(spoints[numLines]);
            var pxLine = ctx.getImageData(0, slineStep * spoints[numLines], width, 2).data,
                sum = [],
                min = 0,
                max = 0;
            for(var row = 0; row < 2; row++){
                for(var col = 0; col < width; col++){
                    var i = ((row * width) + col) * 4,
                        g = ((pxLine[i] * 3) + (pxLine[i + 1] * 4) + (pxLine[i + 2] * 2)) / 9,
                        s = sum[col];
                    pxLine[i] = pxLine[i + 1] = pxLine[i + 2] = g;
                    sum[col] = g + (undefined == s ? 0 : s);
                }
            }
            for(var i = 0; i < width; i++){
                var s = sum[i] = sum[i] / 2;
                if(s < min){ min = s; }
                if(s > max){ max = s; }
            }
            var pivot = min + ((max - min) / 2),
                bmp = [];
            for(var col = 0; col < width; col++){
                var matches = 0;
                for(var row = 0; row < 2; row++){
                    if(pxLine[((row * width) + col) * 4] > pivot){ matches++; }
                }
                bmp.push(matches > 1);
            }
            var curr = bmp[0],
                count = 1,
                lines = [];
            for(var col = 0; col < width; col++){
                if(bmp[col] == curr){ count++; }
                else{
                    lines.push(count);
                    count = 1;
                    curr = bmp[col];
                }
            }
            var code = '',
                bar = ~~((lines[1] + lines[2] + lines[3]) / 3),
                u = UPC_SET;
            for(var i = 1, l = lines.length; i < l; i++){
                if(code.length < 6){ var group = lines.slice(i * 4, (i * 4) + 4); }
                else{ var group = lines.slice((i * 4 ) + 5, (i * 4) + 9); }
                var digits = [
                    Math.round(group[0] / bar),
                    Math.round(group[1] / bar),
                    Math.round(group[2] / bar),
                    Math.round(group[3] / bar)
                ];
                code += u[digits.join('')] || u[digits.reverse().join('')] || 'X';
                if(12 == code.length){ return code; break; }
            }
            if(-1 == code.indexOf('X')){ return code || false; }
        }
        return false;
    }
})();

Ejemplo de cómo funciona: http://tobeytailor.s3.amazonaws.com/get_barcode_from_image/index.html

El código HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
  <head>
    <title>Barcode recognition with JavaScript</title>
    <script type="text/javascript" src="get_barcode_from_image.js"></script>
  </head>
  <body>
    <img id="barcode" src="barcode.jpg"/>
    <br/>
    <button onclick="alert(getBarcodeFromImage('barcode'))">Scan</button>
  </body>
</html>

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".