.net core mvc实现条形码

转载于作者Lucas汪星人:https://www.jianshu.com/p/9955b4f27501

在原先作者的基础上根据我自己修改了一些代码仅供参考:

首先需要引用NuGet包:ZXing.Net.Bindings.ZKWeb.System.Drawing

也可以使用终端开发者PowerShell使用指令安装:dotnet add package ZXing.Net.Bindings.ZKWeb.System.Drawing

然后可以自己去写一个Demo创建一个MVC控制器写入以下代码:

/// <summary>
        /// 生成条形码,保存成图片,使用了ZXing
        /// </summary>
        public IActionResult GenerateQRimage(string content)//public static byte[] GenerateQRimage(string content)
        {
            //初始化条形码格式,宽高,以及PureBarcode=true则不会留白框
            var writer = new BarcodeWriterPixelData
            {
                Format = BarcodeFormat.CODE_128,//编码格式CODE_128或者CODABAR
                Options = new EncodingOptions { Height = 31, Width = 167, PureBarcode = true, Margin = 1 }
            };
            var pixelData = writer.Write(content);
            using (var bitmap = new System.DrawingCore.Bitmap(pixelData.Width, pixelData.Height, PixelFormat.Format32bppRgb))
            using (var ms = new MemoryStream())
            {
                var bitmapData = bitmap.LockBits(new System.DrawingCore.Rectangle(0, 0, pixelData.Width, pixelData.Height),
                   System.DrawingCore.Imaging.ImageLockMode.WriteOnly, System.DrawingCore.Imaging.PixelFormat.Format32bppRgb);
                try
                {
                    // we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image
                    System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0,
                       pixelData.Pixels.Length);
                }
                finally
                {
                    bitmap.UnlockBits(bitmapData);
                }
                // save to stream as PNG
                bitmap.Save(ms, System.DrawingCore.Imaging.ImageFormat.Png);
                System.DrawingCore.Image image = System.DrawingCore.Bitmap.FromStream(ms, true);
                image.Save("D:\\2010-asmart-healthcare\\SmartHealthcare\\SmartHealthcare.Web\\wwwroot\\barcodeimg\\" + content + ".png");
                byte[] bytes = ms.GetBuffer();
                if (bytes != null)
                {
                    return Ok("生成成功");
                }
                else
                {
                    return Ok("生成失败");
                }

            }
        }

在这段代码中要注意引用的命名空间,如:System.DrawingCore 具体的情况请在使用到你的项目中去解决大概率就是命名空间的原因,还有代码中

image.Save("D:\\2010-asmart-healthcare\\SmartHealthcare\\SmartHealthcare.Web\\wwwroot\\barcodeimg\\" + content + ".png");具体的路径可以自己去自定义,比如可以保存到你自己的电脑文件夹中,改路径就行了。

然后创建一个MVC视图也是写一个小Demo去测试,代码如下:

@{
    Layout = null;
}
<div>
    <header>
        <button id="imgOn">生成条形码</button>
        @*url: '/BarCode/GetBarCode?message=' + message + "&gifFileName=" + "D:/test/test.gif" + "&width=" + 100 + "&height=" + 50,*@
    </header>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/jquery/dist/jquery.js"></script>
<script>
    $("#imgOn").click(function () {
        var message = "456789";
        $.ajax({
            url: '/BarCode/GenerateQRimage?content=' + message,
            type: 'get',
            success: function (res) {
                console.log(res);
            }
        })
    })
</script>

代码中的message可以自定义条形码中扫描出来的具体内容 比如我在代码中写的456789,那么我扫描条形码识别出来的内容就是456789

后端接受的参数名字叫content,具体的实现就需要结合具体的业务。

然后就可以生成条形码了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现任务排序,可以使用ASP.NET Core MVC框架中的排序功能。在控制器中,可以定义一个Action来处理排序请求,该Action可以接收排序参数并对任务进行排序。 例如,假设你有一个Task类,其中包含一个Name和一个Priority属性。你可以定义一个Index Action来显示所有任务,并使用SortOrder参数来确定如何排序它们。 ```csharp public IActionResult Index(string sortOrder) { ViewData["NameSortParm"] = sortOrder == "name" ? "name_desc" : "name"; ViewData["PrioritySortParm"] = sortOrder == "priority" ? "priority_desc" : "priority"; var tasks = from t in _context.Tasks select t; switch (sortOrder) { case "name": tasks = tasks.OrderBy(t => t.Name); break; case "name_desc": tasks = tasks.OrderByDescending(t => t.Name); break; case "priority": tasks = tasks.OrderBy(t => t.Priority); break; case "priority_desc": tasks = tasks.OrderByDescending(t => t.Priority); break; default: tasks = tasks.OrderBy(t => t.Priority); break; } return View(tasks.ToList()); } ``` 在这个例子中,我们定义了两个视图数据项,用于在视图中显示排序链接。我们使用LINQ查询来获取所有任务,并根据SortOrder参数对它们进行排序。最后,我们将排序后的任务列表传递给视图进行显示。 在视图中,你可以使用Html.ActionLink来创建排序链接。例如,以下代码会创建一个名称排序链接: ```html <th> @Html.ActionLink("Name", "Index", new { sortOrder = ViewBag.NameSortParm }) </th> ``` 这样,当用户单击这个链接时,会发送一个带有名称排序参数的请求,控制器会接收该请求并按名称排序任务列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值