C# 二维码生成、识别

您所在的位置:网站首页 二维码生成源代码 C# 二维码生成、识别

C# 二维码生成、识别

2023-05-21 15:40| 来源: 网络整理| 查看: 265

C# 二维码生成、识别 原创

lw112190 2023-05-11 10:48:57 博主文章分类:C# ©著作权

文章标签 二维码 System Image Text 文章分类 Python 后端开发

©著作权归作者所有:来自51CTO博客作者lw112190的原创作品,请联系作者获取转载授权,否则将追究法律责任

C# 二维码生成、识别_二维码

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using com.google.zxing.common; using AForge.Video.DirectShow; using com.google.zxing; using AForge.Video; namespace CameraQRCode { public partial class frmMain : Form { public frmMain() { InitializeComponent(); } ///调用AForge使用摄像头 FilterInfoCollection Use_Webcams = null; VideoCaptureDevice cam = null; OpenFileDialog openFileDialog1 = new OpenFileDialog(); /// /// 生成二维码并保存图片 /// /// /// private void btnQRCode_Click(object sender, EventArgs e) { string content = txtInputForQR.Text; ByteMatrix byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 300, 300); Bitmap bitmap = toBitmap(byteMatrix); pictureBox1.Image = bitmap; SaveFileDialog sFD = new SaveFileDialog(); sFD.Filter = "保存图片(*.png) |*.png|所有文件(*.*) |*.*"; sFD.DefaultExt = "*.png|*.png"; sFD.AddExtension = true; if (sFD.ShowDialog() == DialogResult.OK) { if (sFD.FileName != "") { writeToFile(byteMatrix, System.Drawing.Imaging.ImageFormat.Png, sFD.FileName); } } } /// /// 解析 /// /// /// private void btnQRDeCode_Click(object sender, EventArgs e) { if (this.openFileDialog1.ShowDialog() != DialogResult.OK) { return; } Image img = Image.FromFile(this.openFileDialog1.FileName); Bitmap bmap; try { bmap = new Bitmap(img); } catch (System.IO.IOException ioe) { MessageBox.Show(ioe.ToString()); return; } if (bmap == null) { MessageBox.Show("Could not decode image"); return; } LuminanceSource source = new RGBLuminanceSource(bmap, bmap.Width, bmap.Height); com.google.zxing.BinaryBitmap bitmap1 = new com.google.zxing.BinaryBitmap(new HybridBinarizer(source)); Result result; try { result = new MultiFormatReader().decode(bitmap1); } catch (ReaderException re) { MessageBox.Show(re.ToString()); return; } txtOutputQR.Text = result.Text; //MessageBox.Show(result.Text); } /// /// 关闭摄像头 /// /// /// private void btnStop_Click(object sender, EventArgs e) { if (cam != null) { //关闭摄像头 if (cam.IsRunning) { cam.Stop(); } } } /// /// 打开摄像头 /// /// /// private void btnOpen_Click(object sender, EventArgs e) { cam.Start(); if (!timer1.Enabled) { timer1.Enabled = true; } } private void Cam_NewFrame(object obj, NewFrameEventArgs eventArgs) { this.pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); } public static void writeToFile(ByteMatrix matrix, System.Drawing.Imaging.ImageFormat format, string file) { Bitmap bmap = toBitmap(matrix); bmap.Save(file, format); } public static Bitmap toBitmap(ByteMatrix matrix) { int width = matrix.Width; int height = matrix.Height; Bitmap bmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { bmap.SetPixel(x, y, matrix.get_Renamed(x, y) != -1 ? ColorTranslator.FromHtml("0xFF000000") : ColorTranslator.FromHtml("0xFFFFFFFF")); } } return bmap; } /// /// 扫描识别二维码 /// /// /// private void timer1_Tick(object sender, EventArgs e) { //识别图片中的二维码 Image img = this.pictureBox1.Image; ;// Image.FromFile(this.openFileDialog1.FileName); if (img == null) return; Bitmap bmap; try { bmap = new Bitmap(img); } catch (System.IO.IOException ioe) { MessageBox.Show(ioe.ToString()); return; } if (bmap == null) { MessageBox.Show("Could not decode image"); return; } LuminanceSource source = new RGBLuminanceSource(bmap, bmap.Width, bmap.Height); com.google.zxing.BinaryBitmap bitmap1 = new com.google.zxing.BinaryBitmap(new HybridBinarizer(source)); Result result; try { result = new MultiFormatReader().decode(bitmap1); } catch (ReaderException re) { //MessageBox.Show(re.ToString()); return; } txtOutputQR.Text = result.Text; this.timer1.Enabled = false; this.cam.Stop(); this.pictureBox1.Image = null; MessageBox.Show("图中二维码:" + result.Text); } private void frmMain_Load(object sender, EventArgs e) { //初始化AForge内容 Use_Webcams = new FilterInfoCollection(FilterCategory.VideoInputDevice); if (Use_Webcams.Count > 0) { //实例化对象 cam = new VideoCaptureDevice(Use_Webcams[0].MonikerString); //绑定事件 cam.NewFrame += new NewFrameEventHandler(Cam_NewFrame); } } } }

收藏 评论 分享 举报

上一篇:图形、视频及编码速查表

下一篇:Shell脚本关闭Nginx进程



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3