ساخت QR Code با استفاده ازZXING.NET در ASP.NET Core
یکشنبه 28 خرداد 1396در این مقاله، نحوه ساخت یک تولید کننده QR Code در ASP.NET Core 1.0 با کمک کتابخانه Zxing.Net به صورت کامل و به همراه یک مثال عملی آموزش داده می شود.
مقدمه
برای ساخت QR Code در ASP.NET Core کتابخانه های زیادی وجود دارد، ولی اکثر آنها دارای مشکل و خطاهایی هستند. از بین این کتابخانه ها، کتابخانه Zxing.Net برای ساخت QR Code بسیار مناسب است و عملکرد خوبی دارد. این کتابخانه توانایی decode و تولید بارکد ها را دارد.
قبل از خواندن این مقاله، نیاز است که شما به اصول اولیه ASP.NET Core آشنا باشید.
Zxing.Net
این کتابخانه توانایی decode و تولید بارکدهای مختلفی مثل QR Code، PDF 417، EAN، UPC، Aztec، Data Matrix و Codabar را دارد.
Assembly های مورد نیاز
Assembly هایی که در زیر آورده شده اند برای استفاده از QR Code Generator لازم هستند.
using Microsoft.AspNetCore.Razor.TagHelpers; using System; using System.IO; using ZXing.QrCode;
بسته های مورد نیاز
بسته های زیر برای ساخت و نمایش QR Code ها در برنامه نیاز است.
"CoreCompat.System.Drawing": "1.0.0-beta006", "ZXing.Net": "0.15.0"
C#
در داخل برنامه یک کلاس با نام QRCodeTagHelper لازم داریم، که محتویات این کلاس مانند کد زیر است.
namespace QRCode { [HtmlTargetElement("qrcode")] public class QRCodeTagHelper: TagHelper { public override void Process(TagHelperContext context, TagHelperOutput output) { var QrcodeContent = context.AllAttributes["content"].Value.ToString(); var alt = context.AllAttributes["alt"].Value.ToString(); var width = 250; // width of the Qr Code var height = 250; // height of the Qr Code var margin = 0; var qrCodeWriter = new ZXing.BarcodeWriterPixelData { Format = ZXing.BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions { Height = height, Width = width, Margin = margin } }; var pixelData = qrCodeWriter.Write(QrcodeContent); // creating a bitmap from the raw pixel data; if only black and white colors are used it makes no difference // that the pixel data ist BGRA oriented and the bitmap is initialized with RGB using(var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb)) using(var ms = new MemoryStream()) { var bitmapData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.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.Drawing.Imaging.ImageFormat.Png); output.TagName = "img"; output.Attributes.Clear(); output.Attributes.Add("width", width); output.Attributes.Add("height", height); output.Attributes.Add("alt", alt); output.Attributes.Add("src", String.Format("data:image/png;base64,{0}", Convert.ToBase64String(ms.ToArray()))); } } } }
Index.chtml
قطعه کد زیر، QR Code ساخته شده را به کاربر نمایش می دهد.
@{ ViewData["Title"] = "Home"; } <h2>@ViewData["Title"].</h2> <h3>@ViewData["Message"]</h3> A library which supports decoding and generating of barcodes (like QR Code, PDF 417, EAN, UPC, Aztec, Data Matrix, Codabar) within images. <qrcode alt="QR Code" content="https://barnamenevisan.org/" /> https://barnamenevisan.org/
_ViewImports.cshtml
این قطعه کد باعث تزریق TagHelper به کل برنامه می شود.
@addTagHelper "*, QRCode"
project.json
وابستگی هایی که در زیر آورده شده اند برای ساخت برنامه QR Code لازم هستند.
{ "dependencies": { "Microsoft.AspNetCore.Diagnostics": "1.0.0", "Microsoft.AspNetCore.Mvc": "1.1.2", "Microsoft.AspNetCore.Mvc.Core": "1.1.2", "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", "Microsoft.AspNetCore.StaticFiles": "1.1.1", "Microsoft.Extensions.Logging.Console": "1.0.0", "CoreCompat.System.Drawing": "1.0.0-beta006", "ZXing.Net": "0.15.0" }, "tools": { "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" }, "frameworks": { "net452": { } }, "buildOptions": { "emitEntryPoint": true, "preserveCompilationContext": true }, "publishOptions": { "include": [ "wwwroot", "web.config" ] }, "scripts": { "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] } }
خروجی
آموزش asp.net mvc
- ASP.net MVC
- 3k بازدید
- 4 تشکر