/// <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); } } }
// <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; } } }
/// <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); } } }
/// <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, "一维码读取失败."); } } }
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 }
/// <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"); } } }