实例介绍
条码识别
【核心代码】
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Diagnostics;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Drawing.Imaging;
usingThoughtWorks.QRCode.Codec;
usingThoughtWorks.QRCode.Codec.Data;
usingZBar;
usingZXing;
usingImage = System.Drawing.Image;
namespace条码识别
{
publicpartialclassMainForm : Form
{
publicMainForm()
{
InitializeComponent();
}
/// <summary>
/// Zbar条码识别
/// </summary>
privatevoidScanBarCodeZbar(stringfileName)
{
Image primaryImage = Image.FromFile(fileName);
// Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage);
using(ZBar.ImageScanner scanner =newZBar.ImageScanner())
{
scanner.SetConfiguration(ZBar.SymbolType.QRCODE, ZBar.Config.Enable, 1);
List<ZBar.Symbol> symbols =newList<ZBar.Symbol>();
System.Diagnostics.Stopwatch watch =newStopwatch();
watch.Start();
symbols = scanner.Scan((Image)primaryImage);
watch.Stop();
TimeSpan timeSpan = watch.Elapsed;
if(symbols !=null&& symbols.Count > 0)
{
stringresult ="扫描执行时间:" timeSpan.TotalMilliseconds.ToString();
symbols.ForEach(s => result =",条码内容:" s.Data " 条码质量:" s.Type Environment.NewLine);
MessageBox.Show(result);
}
}
}
/// <summary>
/// Zxing条码识别
/// </summary>
privatevoidScanBarCodeZxing(stringfileName)
{
Image primaryImage = Image.FromFile(fileName);
Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage);
BarcodeReader reader =newBarcodeReader();
System.Diagnostics.Stopwatch watch =newStopwatch();
watch.Start();
Result result = reader.Decode((Bitmap)pImg);//通过reader解码
watch.Stop();
TimeSpan timeSpan = watch.Elapsed;
MessageBox.Show("二维码值:"result",扫描执行时间:" timeSpan.TotalMilliseconds.ToString());
}
/// <summary>
///thoughtworkqrcode条码识别
/// </summary>
privatevoidScanBarCodeTWQR(stringfileName)
{
Image primaryImage = Image.FromFile(fileName);
Bitmap pImg = (Bitmap)primaryImage;// MakeGrayscale3((Bitmap)primaryImage);
try
{
System.Diagnostics.Stopwatch watch =newStopwatch();
watch.Start();
stringdecodedString =newQRCodeDecoder().decode(newQRCodeBitmapImage(pImg), Encoding.UTF8);
watch.Stop();
TimeSpan timeSpan = watch.Elapsed;
MessageBox.Show("二维码值:" decodedString ",扫描执行时间:" timeSpan.TotalMilliseconds.ToString());
}
catch(Exception ex)
{
MessageBox.Show("好难过");
}
}
/// <summary>
/// 处理图片灰度
/// </summary>
/// <param name="original"></param>
/// <returns></returns>
publicstaticBitmap MakeGrayscale3(Bitmap original)
{
//create a blank bitmap the same size as original
Bitmap newBitmap =newBitmap(original.Width, original.Height);
//get a graphics object from the new image
Graphics g = Graphics.FromImage(newBitmap);
//create the grayscale ColorMatrix
System.Drawing.Imaging.ColorMatrix colorMatrix =newSystem.Drawing.Imaging.ColorMatrix(
newfloat[][]
{
newfloat[] {.3f, .3f, .3f, 0, 0},
newfloat[] {.59f, .59f, .59f, 0, 0},
newfloat[] {.11f, .11f, .11f, 0, 0},
newfloat[] {0, 0, 0, 1, 0},
newfloat[] {0, 0, 0, 0, 1}
});
//create some image attributes
ImageAttributes attributes =newImageAttributes();
//set the color matrix attribute
attributes.SetColorMatrix(colorMatrix);
//draw the original image on the new image
//using the grayscale color matrix
g.DrawImage(original,newRectangle(0, 0, original.Width, original.Height),
0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
//dispose the Graphics object
g.Dispose();
returnnewBitmap;
}
privatevoidbutton2_Click(objectsender, EventArgs e)
{
OpenFileDialog fileDialog =newOpenFileDialog();
DialogResult dr = fileDialog.ShowDialog();
if(dr == DialogResult.OK)
{
switch(comboBox1.Text.Trim().ToLower())
{
case "zbar":
{
ScanBarCodeZbar(fileDialog.FileName);
break;
}
case"zxing":
{
ScanBarCodeZxing(fileDialog.FileName);
break;
}
case"thoughtworkqrcode":
{
ScanBarCodeTWQR(fileDialog.FileName);
break;
}
}
}
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论