发表在< / div >< / div >

我们已经搬到freeCodeCamp.org/news

如何轻松实现QRCoder ASP。网络核心使用c#

QRCoder ASP。网络核心Implementation

QRCoder是一个非常受欢迎的二维码实现图书馆用c#编写的。它是可用的GitHub在这里我要实现QRCoder库生成二维码在ASP。网络核心应用程序。我也会使用c#。

我将会以三种方式实现QRCoder,:

1。为任何文本创建二维码位图图像。

2。创建二维码(.qrr)对于任何一个文本文件,然后将这些文件保存在应用程序。

3所示。读取和显示所有的QR代码文件(.qrr)。

先安装QRCoderASP。网络核心框架。

你可以从我的GitHub Respositiory下载完整的代码

安装

安装通过NuGet QRCoder包管理器。如果你想使用NuGet,搜索“QRCoder”或在NuGet包管理器控制台中运行以下命令:

点>安装包QRCoder

QRCoder将安装在1分钟,可以使用了。

现在让我们开始实施QRCoder上述3方面。

为任何文本创建二维码位图图像

创建一个新的控制器称为“QRCoderController控制器内的文件夹。控制器将被创建,它将只有一个动作方法叫做“指数”:

公共IActionResult指数()
{
返回视图();
}

进口以下名称空间在控制器:

使用系统;
使用System.Collections.Generic;
使用System.Drawing;
使用先;
使用Microsoft.AspNetCore.Mvc;
使用QRCoder;

接下来,添加索引类型的行动(HttpPost)控制器:

(HttpPost)
公共IActionResult指数(字符串qrText)
{
QRCodeGenerator qrGenerator = new QRCodeGenerator ();
QRCodeData QRCodeData = qrGenerator.CreateQrCode (qrText,
QRCodeGenerator.ECCLevel.Q);
QRCode QRCode = new QRCode (qrCodeData);
位图qrCodeImage = qrCode.GetGraphic (20);
返回视图(BitmapToBytes (qrCodeImage));
}

这个索引操作接受一个字符串参数称为“qrText”。它包含的文本提供了一个输入控件视图中定义。本文将转换为二维码位图图像。下面的代码行做这项工作:

QRCodeGenerator qrGenerator = new QRCodeGenerator ();QRCodeData QRCodeData = qrGenerator.CreateQrCode (qrText,QRCodeGenerator.ECCLevel.Q);QRCode QRCode = new QRCode (qrCodeData);
位图qrCodeImage = qrCode.GetGraphic (20);

QRCode对象(的qrCode”)调用一个静态函数定义的名为“BitmapToBytes ()”。这个函数的作用是将位图图像的Byte []”。

将这个函数添加到您的控制器:

私有静态Byte [] BitmapToBytes(位图img)
{
使用(MemoryStream流= new MemoryStream ())
{
img。保存(流,System.Drawing.Imaging.ImageFormat.Png);
返回stream.ToArray ();
}
}

最后创建的索引视图内的视图/ QRCoder的文件夹下面的代码:

@ model Byte []
@ {
布局=零;
}
< !DOCTYPE html >
< html >
<头>
< meta name = " viewport " content = " width =设备宽度" / > <标题>实施QRCoder ASP。网络核心——创建二维码< /名称>
<时尚>身体{背景:# 111没有重演;背景图片:-webkit-gradient(径向,50% 0 150 0 50%,300年,从(# 444),(# 111));}h1, h2, h3 {text-align:中心;颜色:# FFF;保证金:5 px 0;}h1 {字体大小:30 px;}h2的{字体大小:25 px;颜色:# 0184年e3;文字修饰:没有;}h3 {字体大小:23 px;边界底部:固体3 px # CCC;padding-bottom: 10 px;}h3的{颜色:# 00 e8ff;文字修饰:没有;}h3,盘旋,h2:{徘徊文字修饰:下划线;}.container {宽度:800 px;保证金:汽车;颜色:# FFF;字体大小:25 px;}.container #{内容边界:冲2 px # CCC;填充:10 px;}#{重置填充:5 px 10 px;背景:# 4 caf50;边界:没有;颜色:# FFF;光标:指针;}#重置:{徘徊颜色:# 4 caf50;背景:# FFF;}# {viewContent表宽度:100%;}# viewContent表tr {身高:80 px;背景:darkcyan;}# viewContent表tr td {宽度:50%;padding-left: 5 px;}> < /风格< / >头<身体>
< div class = "容器" >
< div id = "内容" >
<标题>实施QRCoder ASP。网络核心——创建二维码< / h1 >
< h2 >
< a href = " http://www.yogihosting.com/category/aspnet-core/ " >阅读教程YogiHosting»< / >
< id =“重置”按钮onclick = "位置= " " >重置»> < /按钮
< / h2 >
< div id = " viewContent " >
@using (Html。BeginForm(空,空,FormMethod.Post))
{
<表>
tbody > <
< tr >
< td >
<标记>创建二维码< /输入文本标签
< / td >
< td >
< input type = " text " name = " qrText " / >
< / td >
< / tr >
< tr >
< td colspan = " 2 " >
> <按钮> < /提交按钮
< / td >
< / tr >
tbody > < /
< /表>
}
< / div >

@ {
如果(模型! = null)
{
< h3 >成功二维码生成< / h3 >
< img src = " @String.Format(“数据:图像/ png; base64, {0}”, Convert.ToBase64String(模型))”/>
}
}
< / div >
< / div >
< /身体>
< / html >

索引视图有一个的输入的控制。用户输入文本到该控件创建QR代码:

< input type = " text " name = " qrText " / >

一旦二维码生成的索引操作方法,其“字节的数组返回到视图模型,然后下面的显示位图图像的代码:

@ {
如果(模型! = null)
{
< h3 >成功二维码生成< / h3 >
< img src = " @String.Format(“数据:图像/ png; base64, {0}”, Convert.ToBase64String(模型))”/>
}
}

测试代码

运行您的应用程序和去URL - 'http://localhost: 50755 / QRCoder“调用索引操作方法。

在文本框中,添加你的文本并单击submit按钮创建二维码位图图像。

看到这张图片说明了它的工作:

创建QRCode位图图像

创建二维码(.qrr)对于任何一个文本文件,然后将这些文件保存在应用程序

你也可以生成二维码为一个文本文件并将其保存在你的网站。这些文件。qrr扩展。

控制器添加以下操作方法称为“GenerateFile”:

公共IActionResult GenerateFile ()
{
返回视图();
}
(HttpPost)
公共IActionResult GenerateFile(字符串qrText)
{
QRCodeGenerator qrGenerator = new QRCodeGenerator ();
QRCodeData QRCodeData = qrGenerator.CreateQrCode (qrText,QRCodeGenerator.ECCLevel.Q);
.ToString字符串fileGuid = Guid.NewGuid () ()。Substring (0, 4);qrCodeData。SaveRawData (“wwwroot / qrr /文件——“+ fileGuid +”。qrr”, QRCodeData.Compression.Uncompressed);QRCodeData qrCodeData1 = new QRCodeData (“wwwroot / qrr /文件——“+ fileGuid +”。qrr”, QRCodeData.Compression.Uncompressed);QRCode QRCode = new QRCode (qrCodeData1);
位图qrCodeImage = qrCode.GetGraphic (20);
返回视图(BitmapToBytes (qrCodeImage));
}

(HttpPost)版本的操作方法生成二维码内文件的wwwroot / qrr”文件夹中。这个工作的代码如下:

QRCodeGenerator qrGenerator = new QRCodeGenerator ();QRCodeData QRCodeData = qrGenerator.CreateQrCode (qrText,QRCodeGenerator.ECCLevel.Q);.ToString字符串fileGuid = Guid.NewGuid () ()。Substring (0, 4);qrCodeData。SaveRawData (“wwwroot / qrr /文件——“+ fileGuid +”。qrr”, QRCodeData.Compression.Uncompressed);

一旦创建.qrr文件然后我只是阅读网站的保存位置。然后我将它转换为位图类型,最后将图像的字节发送给视图。对应的代码是:

QRCodeData qrCodeData1 = new QRCodeData (“wwwroot / qrr /文件——“+ fileGuid +”。qrr”, QRCodeData.Compression.Uncompressed);QRCode QRCode = new QRCode (qrCodeData1);
位图qrCodeImage = qrCode.GetGraphic (20);
返回视图(BitmapToBytes (qrCodeImage));

接下来,添加GenerateFile视图里面的视图/ QRCoder的文件夹,添加下面的代码:

@ model Byte []@ {布局=零;}< !DOCTYPE html >< html ><头>< meta name = " viewport " content = " width =设备宽度" / ><标题>实施QRCoder ASP。网络核心- Create QR Code File
<时尚>身体{背景:# 111没有重演;背景图片:-webkit-gradient(径向,50% 0 150 0 50%,300年,从(# 444),(# 111));}h1, h2, h3 {text-align:中心;颜色:# FFF;保证金:5 px 0;}h1 {字体大小:30 px;}h2的{字体大小:25 px;颜色:# 0184年e3;文字修饰:没有;}h3 {字体大小:23 px;边界底部:固体3 px # CCC;padding-bottom: 10 px;}h3的{颜色:# 00 e8ff;文字修饰:没有;}h3,盘旋,h2:{徘徊文字修饰:下划线;}.container {宽度:800 px;保证金:汽车;颜色:# FFF;字体大小:25 px;}.container #{内容边界:冲2 px # CCC;填充:10 px;}#{重置填充:5 px 10 px;背景:# 4 caf50;边界:没有;颜色:# FFF;光标:指针;}#重置:{徘徊颜色:# 4 caf50;背景:# FFF;}# {viewContent表宽度:100%;}# viewContent表tr {身高:80 px;背景:darkcyan;}# viewContent表tr td {宽度:50%;padding-left: 5 px;}> < /风格< / >头<身体>< div class = "容器" >< div id = "内容" ><标题>实施QRCoder ASP。网络核心- Create QR Code File< h2 >< a href = " http://www.yogihosting.com/category/aspnet-core/ " >阅读教程YogiHosting»< / >< id =“重置”按钮onclick = "位置= " " >重置»> < /按钮< / h2 >< div id = " viewContent " >@using (Html。BeginForm(空,空,FormMethod.Post)){<表>tbody > << tr >< td ><标记> < / >标签创建QR输入文本文件< / td >< td >< input type = " text " name = " qrText " / >< / td >< / tr >< tr >< td colspan = " 2 " >> <按钮> < /提交按钮< / td >< / tr >tbody > < /< /表>}< / div >@ {如果(模型! = null){< h3 >成功生成二维码文件< / h3 >< img src = " @String.Format(“数据:图像/ png; base64, {0}”, Convert.ToBase64String(模型))”/>}}< / div >< / div >< /身体>< / html >

这个视图的代码是完全类似于“指数”的观点和工作完全一样。

URL调用这一观点是“http://localhost: 50755 / QRCoder / GenerateFile”。

读取和显示所有的QR代码文件(.qrr)

你也可以阅读所有.qrr文件保存在网站。去你的控制器和添加一个新的行动称为“ViewFile”:

公共IActionResult ViewFile ()
{
列表< KeyValuePair <字符串,Byte [] > > fileData =新列表< KeyValuePair <字符串,Byte [] > > ();
KeyValuePair <字符串,Byte[] >数据;
string [] = Directory.GetFiles文件(“wwwroot / qrr”);
foreach(字符串文件文件)
{
QRCodeData QRCodeData = new QRCodeData(文件,QRCodeData.Compression.Uncompressed);
QRCode QRCode = new QRCode (qrCodeData);
位图qrCodeImage = qrCode.GetGraphic (20);
Byte [] byteData = BitmapToBytes (qrCodeImage);
数据= new KeyValuePair <字符串,Byte [] > (Path.GetFileName(文件),byteData);
fileData.Add(数据);
}
返回视图(fileData);
}

在这种操作方法,我读了位于“qrr”文件夹中使用代码:

Directory.GetFiles (“wwwroot / qrr”)

然后我添加在每个qrr文件的字节数和名字列表< KeyValuePair <字符串,Byte [] > >对象。

最后这个对象返回到视图:

返回视图(fileData);

最后创建的ViewFile“内视图”视图/ QRCoder的文件夹下面的代码:

@ model列表< KeyValuePair <字符串,Byte [] > >@ {布局=零;}< !DOCTYPE html >< html ><头>< meta name = " viewport " content = " width =设备宽度" / ><标题>实施QRCoder ASP。网络核心- View QR Code Files
<时尚>身体{背景:# 111没有重演;背景图片:-webkit-gradient(径向,50% 0 150 0 50%,300年,从(# 444),(# 111));}h1, h2, h3 {text-align:中心;颜色:# FFF;保证金:5 px 0;}h1 {字体大小:30 px;}h2的{字体大小:25 px;颜色:# 0184年e3;文字修饰:没有;}h3 {字体大小:23 px;边界底部:固体3 px # CCC;padding-bottom: 10 px;}h3的{颜色:# 00 e8ff;文字修饰:没有;}h3,盘旋,h2:{徘徊文字修饰:下划线;}.container {宽度:800 px;保证金:汽车;颜色:# FFF;字体大小:25 px;}.container #{内容边界:冲2 px # CCC;填充:10 px;}#{重置填充:5 px 10 px;背景:# 4 caf50;边界:没有;颜色:# FFF;光标:指针;}#重置:{徘徊颜色:# 4 caf50;背景:# FFF;}# {viewContent表宽度:100%;}# viewContent表tr {身高:80 px;背景:darkcyan;}# viewContent表tr td {宽度:50%;padding-left: 5 px;}# viewContent表tr td img {宽度:150 px;}# viewContent表tr td跨度{显示:块;}> < /风格< / >头<身体>< div class = "容器" >< div id = "内容" ><标题>实施QRCoder ASP。网络核心- View QR Code Files< h2 >< a href = " http://www.yogihosting.com/category/aspnet-core/ " >阅读教程YogiHosting»< / >< id =“重置”按钮onclick = "位置= " " >重置»> < /按钮< / h2 >< div id = " viewContent " ><表>tbody > <@foreach (KeyValuePair <字符串,Byte [] > k模型){< tr >< td >< img src = " @String.Format(“数据:图像/ png; base64, {0}”, Convert.ToBase64String (k.Value))”/>< span > @k.Key < / span >< / td >< / tr >}tbody > < /< /表>< / div >< / div >< / div >< /身体>< / html >

这个视图显示所有qrr文件作为位图图像内的HTML表。下面的代码创建的HTML表:

<表>tbody > <
@foreach (KeyValuePair <字符串,Byte [] > k模型)
{
< tr >
< td >
< img src = " @String.Format(“数据:图像/ png; base64, {0}”, Convert.ToBase64String (k.Value))”/>
< span > @k.Key < / span >
< / td >
< / tr >
}
tbody > < /
< /表>

测试代码

运行您的应用程序和去URL - 'http://localhost: 50755 / QRCoder / ViewFile”ViewFile动作方法调用。您将看到所有.qrr文件保存在你的网站。

看到下面的图片说明了它的工作:

查看所有QRR文件

你可以从我的GitHub Respositiory下载完整的代码

结论

我希望你喜欢这个存储库将帮助你使用QRCoder ASP。网的核心项目。确保你喜欢这个存储库来表达你的爱。

如果你需要任何帮助在ASP。网络核心then let me know in the below comments section.

我每周发布2 web开发的文章。考虑后我得到电子邮件通知每当我发布一个新的教程中。betway娱乐官网如果这篇文章是有帮助,请点击拍几次按钮来显示你的支持!它将带来一个微笑在我的脸上和激发我写更多的读者喜欢你。

我还发表了另一个freeCodeCamp教程,如果你想看到它,如何创建一个登录和引导模态和jQuery AJAX功能吗

感谢和快乐编码!

- - -

- - -

得到了媒介的应用betway娱乐官网< / h2 >
一个按钮“App Store下载”说,如果点击它会使你的iOS应用程序商店
说一个按钮上,谷歌玩,如果点击它会使你的谷歌商店

瑜珈

瑜珈< / h2 >

ASP。网络核心全堆栈开发者——经常发布web开发教程和文章。我酷爱在基本层面上理解事情。

Baidu