问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

电脑摄像头一维码扫描软件

发布网友 发布时间:2022-04-22 02:59

我来回答

3个回答

热心网友 时间:2023-07-06 18:16

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using ZXing;
using ZXing.Common;
using ZXing.QrCode;

namespace QRCodeService
{
public partial class MainForm : Form
{
//摄像头对象
private Capture cam;
//计时器
System.Timers.Timer _timer = null;
//扫描时间频率(毫秒)
private int scanTime = 250;
private bool videoState = false;
private IContainer componentss;

public MainForm()
{
Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
pictureBox1.Visible = false;
btnStop.Enabled = false;
}

//点击开始扫描
private void btnStart_Click(object sender, EventArgs e)
{
Console.WriteLine("摄像头启动");
btnStart.Enabled = false;
btnStop.Enabled = true;
StartCam();
if (_timer != null && _timer.Enabled)
{
_timer.Stop();
_timer.Dispose();
}
//定时器启动,设置扫描频率
_timer = new System.Timers.Timer(scanTime);
_timer.Start();
_timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
}

//定时器工作
void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Console.WriteLine("扫描开始");
try
{
//摄像头截屏
string result = SnapShot();
if (string.IsNullOrEmpty(result))
{

if (pictureBox1.Image == null)
{
return;
}
else
{
try
{
result = RQDecode(new Bitmap(pictureBox1.Image));
Console.WriteLine(result);
}
catch (Exception ss)
{

}
finally
{
if (null != result && !string.IsNullOrEmpty(result))
{
this.textBoxMsg1.Text = result;
CreateQRCode(result);
Console.WriteLine("扫描完毕");
}
else
{
Console.WriteLine("未扫描到二维码。");
this.textBoxMsg1.Text = "未扫描到二维码。";
pictureBox3.Image = null;
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Console.WriteLine("扫描结束");

}

//点击停止扫描
private void btnStop_Click(object sender, EventArgs e)
{
Console.WriteLine("摄像头关闭");
btnStop.Enabled = false;
btnStart.Enabled = true;
textBoxMsg1.Text = string.Empty;

//摄像头停止
StopCam();
//计时器循环扫描停止
_timer.Stop();
_timer.Dispose();
}

//生成二维码,并显示到界面
private void CreateQRCode(string content)
{

EncodingOptions options = null;
BarcodeWriter writer = null;
options = new QrCodeEncodingOptions
{
DisableECI = true,
CharacterSet = "UTF-8",
Width = pictureBox3.Width,
Height = pictureBox3.Height
};
writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;

Bitmap bitmap = writer.Write(content);
pictureBox3.Image = bitmap;
}

//--截图
private string SnapShot()
{
Cursor.Current = Cursors.WaitCursor;
if (m_ip != IntPtr.Zero)
{
Marshal.FreeCoTaskMem(m_ip);
m_ip = IntPtr.Zero;
}

m_ip = cam.Click();
Bitmap b = new Bitmap(cam.Width, cam.Height, cam.Stride, PixelFormat.Format24bppRgb, m_ip);

b.RotateFlip(RotateFlipType.RotateNoneFlipY);
b = ResizeImage(b, pictureBox1);
pictureBox1.Image = b;

Bitmap bit = null;
bit = new Bitmap(pictureBox1.Width, pictureBox1.Height);

Graphics g = Graphics.FromImage(bit);
g.CopyFromScreen(this.PointToScreen(pictureBox1.Location), new Point(0, 0), bit.Size);
g.Dispose();
string result = string.Empty;
try
{
//扫描二维码
result = RQDecode(bit);
Console.WriteLine(result);
}
catch (Exception ex)
{

}
if (!string.IsNullOrEmpty(result))
{
//生成二维码
CreateQRCode(result);
}
Cursor.Current = Cursors.Default;
return result;
}

//--重置图像大小
private Bitmap ResizeImage(Bitmap bmp, PictureBox picBox)
{
float xRate = (float)bmp.Width / picBox.Size.Width;
float yRate = (float)bmp.Height / picBox.Size.Height;
if (xRate <= 1 && yRate <= 1)
{
return bmp;
}
else
{
float tRate = (xRate >= yRate) ? xRate : yRate;
Graphics g = null;
try
{
int newW = (int)(bmp.Width / tRate);
int newH = (int)(bmp.Height / tRate);
Bitmap b = new Bitmap(newW, newH);
g = Graphics.FromImage(b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
g.Dispose();
return b;
}
catch
{
return null;
}
finally
{
if (null != g)
{
g.Dispose();
}
}
}
}

//--解码
private string RQDecode(Bitmap img)
{
string errText = string.Empty;
Result result = null;
if (img != null)
{
try
{
result = new BarcodeReader().Decode(img);
}
catch { return errText; }
if (result != null)
{
return result.Text;
}
else
{
return errText;
}
}
else
{
return errText;
}
}

//--开启摄像头
private void StartCam()
{
const int VIDEODEVICE = 0;
const int VIDEOWIDTH = 640;
const int VIDEOHEIGHT = 480;
const int VIDEOBITSPERPIXEL = 32;

cam = new Capture(VIDEODEVICE, VIDEOWIDTH, VIDEOHEIGHT, VIDEOBITSPERPIXEL, pictureBox2);
videoState = true;
}

//--停止摄像头
private void StopCam()
{
cam.Dispose();
if (m_ip != IntPtr.Zero)
{
Marshal.FreeCoTaskMem(m_ip);
m_ip = IntPtr.Zero;
}
videoState = false;
}

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
PictureBox p = (PictureBox)sender;
Pen pp = new Pen(System.Drawing.Color.Red);
e.Graphics.DrawRectangle(pp, e.ClipRectangle.X, e.ClipRectangle.Y, e.ClipRectangle.X + e.ClipRectangle.Width - 1, e.ClipRectangle.Y + e.ClipRectangle.Height - 1);

}

private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
try
{
StopCam();
Dispose();
}
catch (Exception ex)
{
MessageBox.Show("");
}
}
}
}

热心网友 时间:2023-07-06 18:17

灰仇挎

热心网友 时间:2023-07-06 18:17

径缠京
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求电脑玩安卓游戏的方法。步骤。以及所有的文件~谢谢 。有的联系我~ 我在电脑管家软件管理下的鹰击长空2都是解压包 澳洲留学读研申请攻略 澳洲留学申请时间是什么时候 去澳大利亚上大学需要什么手续 澳洲留学申请流程时间如何? 中南财经政法大学保险精算专业介绍 黄福记小吃梅干菜扣肉饼怎么样 如何开一家梅干菜扣肉饼店,成本要多少 在照明行业LED配光曲线图怎么看 求 “电脑上用的摄像头条码扫描识别软件” 条形码扫描软件(用摄像头扫描)不是手机版的!电... 下载什么软件可以扫描屋子里有没有摄像头? qc1摄像头下载哪个app 宝气依摄像头安装说明书丢失了没办法扫描二维码下... 谁知道怎样用电脑摄像头扫描条码,求下载网址或软件 用摄像头能否扫描文字,怎样扫描?需要下载什么软件? 有谁知道用摄像头能否扫描文字,怎样扫描?需要下... 下载什么软件可以扫描房间里的摄像头 买了摄像头,找不到aPp了,怎么下载? 智能摄像头要用手机哪个软件才能扫描? 芯视云摄像头下载什么软件可以扫二维码? 拍摄二维码扫描下载是什么原理? 监控存满了怎么清理 监控怎么能删除记录 如何删除监控录像步骤 镭威视手机监控信息怎么删除 旧疤痕怎么治疗 ? 旧疤痕如何才能去掉 老疤痕怎么才能去掉 小米2手机官网预约有什么用? 请具体点 全国中小学生学籍信息管理系统上的照片规格是多大? 学籍照片260×320是什么意思 学生学籍照片规格要求是什么? 学生学籍信息管理系统上的照片规格是多大? 学籍档案需要几寸登记照 学籍档案上的照片。底色用什么颜色 全国中小学学籍照片规格 我是转校生,老师说我要拍电子版的学籍照,照片有... 大学时候用的照片一般是几寸的,红底还是蓝底? 学籍照片处理要求调整为26mm*32mm,还要以身份证命... 小学学籍用照片尺寸是多大? 上传学籍网照片要多少kB 照片尺寸26mm,32mm,150dqi应该对应多少像素 幼升小入学照片的要求是一寸还是二寸,采集信息要... 汽车保险中有哪些条款是汽车专业必备的知识? 车险条款有哪些内容 最新机动车辆保险条款 人保和平安车险条款 汽车保险合同的基本事项包括哪些内容?