CÔNG NGHỆ THÔNG TIN >> BÀI VIẾT CHỌN LỌC

Sinh mã vạch QRCode và Bar Code 128 từ một chuỗi ký tự sử dụng thư viện ZXing trong .NET C#

Đăng lúc: 09:44 AM - 02/01/2024 bởi Charles Chung - 547

Trang bài viết này tôi sẽ hướng dẫn các bạn cách sinh mã vạch QRCode và Bar Code 128 từ một chuỗi ký tự sử dụng thư viện ZXing trong .NET C#

Giới thiệu

  • Bar Code là gì?

Barcode hay mã vạch lần đầu tiên xuất hiện vào năm 1952, được tạo ra bởi 2 nhà phát minh người Mỹ là Norman J. Woodland và Bernard Silver. Với các đại diện tiêu biểu là mã EAN và mã UPC, Barcode thường được người dùng hiểu là các mã vạch 1D biểu diễn dưới dạng vạch đen trắng có kích thước khác nhau được đặt song song với nhau, dãy mã số nằm bên dưới phần mã vạch. Không dừng lại ở đó, với sự phát triển hơn nữa của công nghệ mã số mã vạch, không ít các loại mã vạch mới khác đã được ra đời. Dựa trên đặc điểm của mã vạch mà chúng thường được phân thành các nhóm như mã vạch 1D, mã vạch 2D, mã vạch 3D,...

  • QR Code là gì?

QR code là loại mã vạch 2D ma trận với sự biểu diễn dưới dạng các điểm/ ô vuông nhỏ sắp xếp phức tạp ghép lại với nhau thành 1 ô vuông lớn. QR code được phát triển vào năm 1994 với khả năng phản hồi nhanh còn được biết đến với tên Quick response code (mã phản hồi nhanh) hay mã vạch ma trận (matrix-barcode) cho phép đọc bởi máy quét mã vạch hay điện thoại thông minh có chức năng chụp ảnh.

  • Ưu điểm của Bar Code và QR Code

Mã vạch barcode và QR code đều cung cấp chức năng mã hóa dữ liệu bên trong, từ đó hỗ trợ cung cấp cho người dùng các thông tin về sản phẩm, hàng hóa, dịch vụ phục vụ trong các hoạt động kiểm kê, thanh toán, sắp xếp,... tăng cường sự tiện lợi cho doanh nghiệp, cửa hàng,...Thêm vào đó, barcode và QR code còn mang đến những lợi ích sau:

- Mã vạch kiểm trang hàng thật - giả (cần liên kết giữa nhà bán và ứng dụng kiểm tra)

- Truy xuất nguồn gốc sản phẩm - hàng hóa

- Hỗ trợ quản lý vấn đề bảo hành sản phẩm

- Hỗ trợ truyền thông, hoạt động quảng cáo, marketing.

- Và nhiều hơn thế nữa…

Sinh mã vạch trong ứng dụng C# sử dụng thư viện ZXing

Bước 1: Tạo ứng dụng C# Console App (.NET Framework) - trong bài tôi sử dụng .NET 4.8 

Bước 2: Cài thư viện ZXing và System.Drawing

Vào menu Tools/NuGet Package Manager/ Package Manager Console và lần lượt gõ các lệnh sau để cài nhé

  • NuGet\Install-Package ZXing.Net -Version 0.16.9
  • NuGet\Install-Package System.Drawing.Common -Version 7.0.0

Bước 3: Code logic

Tạo lớp QRBarCode.cs theo gợi ý sau

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
internal class QRBarCode
{
    /// <summary>
    /// Phương thức sinh mã vạch
    /// </summary>
    /// <param name="content">chuỗi cần sinh</param>
    /// <param name="width">chiều rộng</param>
    /// <param name="height">chiều cao</param>
    /// <param name="format">định dạng mã</param>
    /// <returns>Mảng byte chứa dữa liệu dạng ảnh</returns>
    public static byte[] RenderBarQRcode(string content, int width, int height, BarcodeFormat format)
    {
        try
        {
            BarcodeWriter writer = new BarcodeWriter { Format = format };
            writer.Options.Height = height;
            writer.Options.Width = width;
            writer.Options.PureBarcode = true;
            var img = writer.Write(content);
            using (var stream = new MemoryStream())
            {
                img.Save(stream, ImageFormat.Jpeg);
                return stream.ToArray();
            }
        }
        catch (Exception ex)
        {
            return Encoding.ASCII.GetBytes(ex.Message);
        }
    }
}

 

Trong tệp Program.cs code theo gợi ý sau để test

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
internal class Program
{
    static void Main(string[] args)
    {
        //Hiển thị UTF8 trên màn hình console
        Console.OutputEncoding = Encoding.UTF8;
        //khai báo các biến
        string typecode;
        string filename;
        string content;
        //biến đường dẫn thư mục hình ảnh
        string imageFolder = Path.Combine(Environment.CurrentDirectory, "images");
        //kiểm tra nếu chưa tồn tại thư mục images thì tạo
        if (!Directory.Exists(imageFolder))
        {
            Directory.CreateDirectory(imageFolder);
        }
        //nhập thông tin loại mã, tên tệp tin, nội dung
        Console.Write("Nhập loại mã vạch b/q?: ");
        typecode = Console.ReadLine();
        Console.Write("Nhập tên tệp tin: ");
        filename = Console.ReadLine();
        Console.Write("Nhập nội dung: ");
        content = Console.ReadLine();
        //khai báo đường dẫn filecode
        string filecode = Path.Combine(imageFolder, filename + ".jpg");
        //khai báo mảng byte chứa kết quả render code
        byte[] result;
        //sinh mã
        if (typecode == "b")
        {
            result = QRBarCode.RenderBarQRcode(content, 320, 100, ZXing.BarcodeFormat.CODE_128);
        }
        else
        {
            result = QRBarCode.RenderBarQRcode(content, 160, 160, ZXing.BarcodeFormat.QR_CODE);
        }
        //lưu vào file ảnh
        System.IO.File.WriteAllBytes(filecode, result);
        Console.WriteLine("Lưu thành công tại " + filecode);
    }
}

 

Bước 4: Ctrl+F5 chạy và nhập liệu để sinh code

Kết quả

Link tải source code Sinh mã vạch QRCode và Bar Code 128 từ một chuỗi ký tự sử dụng thư viện ZXing trong .NET C#

thay lời cảm ơn!

QUẢNG CÁO - TIẾP THỊ