Example #1
0
        /// <summary>
        /// 条码识别
        /// </summary>
        private static void ScanBarCode(string fileName)
        {
            DateTime now          = DateTime.Now;
            Image    primaryImage = Image.FromFile(fileName);

            Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage);

            using (ZBar.ImageScanner scanner = new ZBar.ImageScanner())
            {
                scanner.SetConfiguration(ZBar.SymbolType.None, ZBar.Config.Enable, 0);
                scanner.SetConfiguration(ZBar.SymbolType.CODE39, ZBar.Config.Enable, 1);
                scanner.SetConfiguration(ZBar.SymbolType.CODE128, ZBar.Config.Enable, 1);
                scanner.SetConfiguration(ZBar.SymbolType.QRCODE, ZBar.Config.Enable, 1);
                List <ZBar.Symbol> symbols = new List <ZBar.Symbol>();
                symbols = scanner.Scan((Image)pImg);

                if (symbols != null && symbols.Count > 0)
                {
                    string result = string.Empty;
                    symbols.ForEach(s => result += "条码内容:" + s.Data + " 条码质量:" + s.Quality + Environment.NewLine);
                    // MessageBox.Show(result);
                    Console.WriteLine(result);
                }
            }
        }
Example #2
0
        // <summary>
        /// 条码识别
        /// </summary>
        private string ScanBarCode(string fileName)
        {
            DateTime now          = DateTime.Now;
            Image    primaryImage = Image.FromFile(fileName);

            Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage);

            using (ZBar.ImageScanner scanner = new ZBar.ImageScanner())
            {
                scanner.SetConfiguration(ZBar.SymbolType.None, ZBar.Config.Enable, 0);
                scanner.SetConfiguration(ZBar.SymbolType.CODE39, ZBar.Config.Enable, 1);
                scanner.SetConfiguration(ZBar.SymbolType.CODE128, ZBar.Config.Enable, 1);

                List <ZBar.Symbol> symbols = new List <ZBar.Symbol>();
                symbols = scanner.Scan((Image)pImg);

                if (symbols != null && symbols.Count > 0)
                {
                    string result = string.Empty;
                    //this.ContentTxt.Text = symbols.FirstOrDefault().Data;
                    return(symbols.FirstOrDefault().Data);
                    // symbols.ForEach(s => result += "条码内容:" + s.Data + " 条码质量:" + s.Quality + Environment.NewLine);
                    //MessageBox.Show(result);
                }
                else
                {
                    //this.ContentTxt.Text = "未识别";
                    return("");
                }
            }
        }
 private void ScanBarcode()
 {
     if (_loadedImage == null)
     {
         return;
     }
     if (_modifiedImage != null)
     {
         _modifiedImage.Dispose();
         _modifiedImage = null;
     }
     _modifiedImage     = AdjustSharpness(_loadedImage as Bitmap, (float)SharpnessTrack.Value / SharpnessTrack.Maximum);
     BarcodeImage.Image = _modifiedImage;
     using (ZBar.ImageScanner scanner = new ZBar.ImageScanner())
     {
         scanner.SetConfiguration(ZBar.SymbolType.None, ZBar.Config.XDensity, 3);
         scanner.SetConfiguration(ZBar.SymbolType.None, ZBar.Config.YDensity, 3);
         List <ZBar.Symbol> symbols = scanner.Scan(_modifiedImage);
         ResultText.Clear();
         foreach (ZBar.Symbol symbol in symbols)
         {
             if (ResultText.TextLength > 0)
             {
                 ResultText.Text += Environment.NewLine;
             }
             ResultText.Text += symbol.Data;
         }
     }
 }
Example #4
0
        /// <summary>
        /// Zbar条码识别
        /// </summary>
        private void ScanBarCodeZbar(Image primaryImage)
        {
            using (ZBar.ImageScanner scanner = new ZBar.ImageScanner())
            {
                scanner.SetConfiguration(ZBar.SymbolType.EAN13, ZBar.Config.Enable, 1);
                List <ZBar.Symbol>           symbols = new List <ZBar.Symbol>();
                System.Diagnostics.Stopwatch watch   = new Stopwatch();
                watch.Start();
                symbols = scanner.Scan((Image)primaryImage);
                watch.Stop();
                TimeSpan timeSpan = watch.Elapsed;

                if (symbols != null && symbols.Count > 0)
                {
                    string result = "扫描执行时间:" + timeSpan.TotalMilliseconds.ToString();
                    symbols.ForEach(s => result += ",条码内容:" + s.Data + " 条码类型:" + s.Type + " 条码质量:" + s.Quality + Environment.NewLine);
                    MessageBox.Show(result);
                }
            }
        }
Example #5
0
        /// <summary>
        /// 条码识别
        /// </summary>
        private void ScanBarCode(string fileName)
        {
            DateTime now = DateTime.Now;

            System.Drawing.Image primaryImage = System.Drawing.Image.FromFile(fileName);

            Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage);

            using (ZBar.ImageScanner scanner = new ZBar.ImageScanner())
            {
                scanner.SetConfiguration(ZBar.SymbolType.None, ZBar.Config.Enable, 0);
                scanner.SetConfiguration(ZBar.SymbolType.CODE39, ZBar.Config.Enable, 1);
                scanner.SetConfiguration(ZBar.SymbolType.CODE128, ZBar.Config.Enable, 1);

                List <ZBar.Symbol> symbols = new List <ZBar.Symbol>();
                symbols = scanner.Scan((System.Drawing.Image)pImg);

                if (symbols != null && symbols.Count > 0)
                {
                    string result = string.Empty;
                    symbols.ForEach(s => result += "条码内容:" + s.Data + " 条码质量:" + s.Quality + Environment.NewLine);
                    //  MessageBox.Show(result);

                    foreach (ZBar.Symbol sym in symbols)
                    {
                        UpdateMsg(lstMsg, "条码内容:" + sym.Data + " 条码质量:" + sym.Quality);
                        p.WriteLog("MAC.txt", sym.Data);
                        p.WriteLog("MAC:" + sym.Data + ",Quality:" + sym.Quality);
                        MAC = sym.Data;
                    }
                }
                else
                {
                    UpdateMsg(lstMsg, "一维码读取失败.");
                }
            }
        }
Example #6
0
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MainForm());
                return;
            }
            var fileName  = args[0];
            var fileNames = new string[0];
            var isBach    = fileName.ToLower().EndsWith("txt");

            if (isBach)
            {
                fileNames = File.ReadAllLines(fileName);
            }
            else
            {
                fileNames = new string[] { fileName };
            }
            var type   = ZBar.SymbolType.CODE128;
            var module = "zbar";

            if (args.Length > 1)
            {
                try
                {
                    type = (ZBar.SymbolType)Convert.ToInt32(args[1]);
                }
                catch (Exception)
                {
                    module = args[1];
                }
            }
            DateTime now = DateTime.Now;

            for (var i = 0; i < fileNames.Length; i++)
            {
                var    fn     = fileNames[i];
                string result = "null";
                switch (module)
                {
                case "zbar":
                    Image  primaryImage = Image.FromFile(fn);
                    Bitmap pImg         = MainForm.MakeGrayscale3((Bitmap)primaryImage);
                    using (ZBar.ImageScanner scanner = new ZBar.ImageScanner())
                    {
                        scanner.SetConfiguration(type, ZBar.Config.Enable, 1);

                        List <ZBar.Symbol> symbols = new List <ZBar.Symbol>();
                        symbols = scanner.Scan((Image)pImg);

                        if (symbols != null && symbols.Count > 0)
                        {
                            result = string.Empty;
                            symbols.ForEach(s => result += $"条码内容:{s.Data} 条码质量:{s.Quality}{Environment.NewLine}");
                        }
                    }
                    break;

                case "zxing":
                    var zx = zxing(fn, 0);
                    result  = string.Empty;
                    result += "条码内容:" + zx;
                    break;

                case "softech":
                    var softech = checkBarcode(fn, 0);
                    result = string.Empty;
                    foreach (var s in softech)
                    {
                        result += $"条码内容:{s}{Environment.NewLine}";
                    }
                    break;

                case "softech2":
                    var softech2 = checkBarcode(fn, 2);
                    result = string.Empty;
                    foreach (var s in softech2)
                    {
                        result += $"条码内容:{s}{Environment.NewLine}";
                    }
                    break;
                }
                Console.WriteLine(result);
                if (isBach)
                {
                    result       = $"{fn.Replace(":","_")}={result.Replace(Environment.NewLine, ",")}";
                    fileNames[i] = result;
                    File.WriteAllLines(fileName, fileNames);
                }
            }
#if DEBUG
            Console.ReadKey();
#endif
        }
Example #7
0
        /// <summary>
        /// zbar识别
        /// </summary>
        /// <param name="fn_share"></param>
        /// <param name="filename"></param>
        private void barcode(fn_share fn_share, string filename)
        {
            string json = string.Empty; string sql = string.Empty;
            string guid = string.Empty; string decoded = string.Empty; string barcode = string.Empty;

            if (db.KeyExists("recognizetask"))
            {
                JObject jo = null;
                try
                {
                    json = db.ListLeftPop("recognizetask");
                    fn_share.systemLog(filename, "-------------------------------------------------------------\r\n");
                    if (!string.IsNullOrEmpty(json))
                    {
                        jo = (JObject)JsonConvert.DeserializeObject(json);
                        //只有PDF文件才会进行条形码识别
                        sql = @"select t.* from list_attachment t where t.ordercode='" + jo.Value <string>("ordercode") + "' and upper(t.filesuffix)='PDF'";
                        DataTable dt = DBMgr.GetDataTable(sql);
                        if (dt.Rows.Count > 0)
                        {
                            DateTime d1 = DateTime.Now;
                            guid = Guid.NewGuid().ToString();
                            //ConvertPDF2Image(direc_pdf + dt.Rows[0]["FILENAME"], direc_img, guid, 1, 1, ImageFormat.Jpeg, Definition.Ten);
                            ConvertPDF.pdfToPic(direc_pdf + dt.Rows[0]["FILENAME"], direc_img, guid, 1, 1, ImageFormat.Jpeg);
                            string fileName = direc_img + guid + ".Jpeg";
                            fn_share.systemLog(filename, "=== ConvertToImage——" + (DateTime.Now - d1) + "\r\n");
                            if (File.Exists(fileName))
                            {
                                Image  primaryImage = Image.FromFile(fileName);
                                Bitmap pImg         = MakeGrayscale3((Bitmap)primaryImage);

                                using (ZBar.ImageScanner scanner = new ZBar.ImageScanner())
                                {
                                    scanner.SetConfiguration(ZBar.SymbolType.None, ZBar.Config.Enable, 0);
                                    scanner.SetConfiguration(ZBar.SymbolType.QRCODE, ZBar.Config.Enable, 1);
                                    scanner.SetConfiguration(ZBar.SymbolType.CODE128, ZBar.Config.Enable, 1);
                                    List <ZBar.Symbol> symbols = new List <ZBar.Symbol>();
                                    symbols = scanner.Scan((Image)pImg);
                                    if (symbols != null && symbols.Count > 0)
                                    {
                                        decoded = symbols[0].Data;
                                    }
                                    if (!string.IsNullOrEmpty(decoded))//有些PDF文件并无条形码
                                    {
                                        //barcode = barconvert(decoded);//编码转换 (这是28系统的转换)
                                        barcode = decoded;
                                    }
                                    else
                                    {
                                        barcode = "001";
                                    }
                                    sql = "update list_order set cusno='" + barcode + "' where code='" + jo.Value <string>("ordercode") + "'";
                                    DBMgr.ExecuteNonQuery(sql);
                                }
                            }
                            fn_share.systemLog(filename, "=== " + jo.Value <string>("ordercode") + "——" + (DateTime.Now - d1) + "——" + barcode + "\r\n");
                        }
                    }
                }
                catch (Exception ex)
                {
                    //db.ListRightPush("recognizetask", json);
                    sql = "update list_order set cusno='002' where code='" + jo.Value <string>("ordercode") + "'";
                    DBMgr.ExecuteNonQuery(sql);
                    fn_share.systemLog(filename, jo.Value <string>("ordercode") + "  异常,识别条码失败:" + ex.Message + "\r\n");
                }
            }
        }