Trong bài viết này, tôi sẽ trình bày cách tạo mã vạch theo chương trình bằng C++. Bạn cũng sẽ học cách triển khai máy quét hoặc đầu đọc mã vạch trong các ứng dụng C++ của mình.

tạo mã vạch trong C++

Mã vạch được sử dụng để thể hiện trực quan dữ liệu ở dạng máy có thể đọc được. Công nghệ nói trên đã được chứng minh là hữu ích, đặc biệt là trong các hệ thống thanh toán tự động được triển khai tại các cửa hàng và siêu thị. Hầu như mọi sản phẩm trên thị trường ngày nay đều có mã vạch trên đó. Sự phổ biến rộng rãi này của mã vạch đã mở rộng các trường hợp sử dụng của nó trong các lĩnh vực khác nhau. Để mắt đến tầm quan trọng của mã vạch, một vài năm trước, Aspose đã ra mắt API trình tạo và đọc mã vạch cho nhiều nền tảng khác nhau. Bài viết này nhằm mục đích giới thiệu cách triển khai trình tạo và trình đọc mã vạch trong các ứng dụng C++ để tự động tạo và đọc mã vạch.

API đọc và tạo mã vạch C++

Aspose.BarCode for C++ là API C++ giàu tính năng để tạo và đọc vô số mã vạch 1D và 2D. Nó cho phép bạn tạo, tùy chỉnh và xuất mã vạch thành hình ảnh chất lượng cao. Bạn có thể tải xuống các tệp thư viện từ phần Tải xuống. Gói có thể tải xuống cũng chứa một ứng dụng C++ demo dành cho bạn.

Sau đây là danh sách các ký hiệu mã vạch bạn có thể tạo bằng Aspose.BarCode cho C++:

  • Mã128
  • Tiêu chuẩn Code39
  • Mã39 mở rộng
  • Tiêu chuẩn mã93
  • Mã93 mở rộng
  • Mã11
  • Codabar
  • BooklandEAN
  • EAN13
  • EAN8
  • EAN128
  • Xen kẽ2of5
  • tiêu chuẩn2of5
  • MSI
  • mạng bưu chính
  • Hành tinh
  • UPCA
  • UPCE
  • EAN14(SCC14)
  • SSCC18
  • ITF14
  • bổ sung mã vạch
  • Pdf417
  • QR
  • Ma trận dữ liệu
  • Ma trận 2 trên 5
  • PZN (Pharma Zentral Nummer, Mã vạch Pharmazentralnummer)
  • Mã nhận dạng bưu điện Deutsche
  • người Aztec
  • Bưu điện Úc

Tạo mã vạch bằng C++

Tạo mã vạch bằng Aspose.BarCode có thể đạt được trong một vài dòng mã. Sau đây là các bước để thực hiện thao tác này.

Mẫu mã sau đây cho biết cách tạo mã vạch bằng C++.

const System::String codeText = u"1234567";
const System::String fileName = u"code39_barcode.jpg";
// Tạo trình tạo mã vạch
System::SharedPtr<BarcodeGenerator> barcodeGenerator = System::MakeObject<BarcodeGenerator>(EncodeTypes::Code39Standard, codeText);
barcodeGenerator->get_Parameters()->set_Resolution(300);
// Tạo mã vạch và lưu dưới dạng hình ảnh
barcodeGenerator->Save(fileName);

Sau đây là mã vạch chúng tôi đã tạo bằng cách sử dụng mã trên.

Tạo mã vạch 2D (QR hoặc loại khác) bằng C++

Trong ví dụ trước, chúng tôi đã tạo mã vạch một chiều. Bây giờ hãy tạo mã vạch hai chiều, chẳng hạn như mã QR. Sau đây là các bước để tạo mã vạch QR.

Mẫu mã sau đây cho biết cách tạo mã vạch QR bằng C++.

const System::String codeText = u"1234567";
const System::String fileName = u"QR_Code.jpg";
// Tạo trình tạo mã vạch
System::SharedPtr<BarcodeGenerator> barcodeGenerator = System::MakeObject<BarcodeGenerator>(EncodeTypes::QR, codeText);
barcodeGenerator->get_Parameters()->set_Resolution(300);
// Tạo mã vạch và lưu dưới dạng hình ảnh
barcodeGenerator->Save(fileName);

Mã QR sau sẽ được tạo bằng mã trên.

Tạo mã vạch tùy chỉnh bằng C++

Bạn cũng có thể tùy chỉnh giao diện của mã vạch. Ví dụ: bạn có thể đặt màu nền trước, màu nền, kích thước, kiểu đường viền, v.v. Sau đây là các bước để tùy chỉnh mã vạch bằng Aspose.BarCode cho C++.

  • Tạo và khởi tạo đối tượng của lớp BarcodeGenerator.
  • Truy cập các tham số mã vạch bằng các phương thức BarcodeGenerator->getParameters().
  • Đặt các tham số mong muốn.
  • Tạo mã vạch và lưu nó dưới dạng hình ảnh.

Mẫu mã sau đây cho biết cách tạo mã vạch tùy chỉnh bằng C++.

System::SharedPtr<BarcodeGenerator> barcodeGenerator = [&] { auto tmp_0 = System::MakeObject<BarcodeGenerator>(EncodeTypes::Aztec, System::String(u"1234567890"));
// thiết lập phong cách broder
tmp_0->get_Parameters()->get_Border()->set_DashStyle(Aspose::BarCode::BorderDashStyle::Solid);
// đặt chiều rộng
tmp_0->get_Parameters()->get_Border()->get_Width()->set_Millimeters(1.0f);
// đặt khả năng hiển thị đường viền
tmp_0->get_Parameters()->get_Border()->set_Visible(true);
// đặt màu nền
tmp_0->get_Parameters()->set_BackColor(System::Drawing::Color::get_Black());
// đặt màu thanh của mã vạch
tmp_0->get_Parameters()->get_Barcode()->set_ForeColor(System::Drawing::Color::get_Orange());
// đặt màu đường viền
tmp_0->get_Parameters()->get_Border()->set_Color(System::Drawing::Color::get_Black());
// đặt màu văn bản
tmp_0->get_Parameters()->get_Barcode()->get_CodeTextParameters()->set_Color(System::Drawing::Color::get_Orange());
// đặt độ phân giải hình ảnh
tmp_0->get_Parameters()->set_Resolution(400);
return tmp_0; }();	
 
barcodeGenerator->Save(System::String(u"custom_barcode.jpg"));

Sau đây là mã vạch Aztec tùy chỉnh mà chúng tôi đã tạo.

Tạo mã vạch có chú thích bằng C++

Mã vạch cũng có thể chứa chú thích bên dưới hoặc bên trên mã vạch. Bạn có thể đặt văn bản của chú thích cũng như khả năng hiển thị của nó trong hình ảnh mã vạch. Mẫu mã sau đây cho biết cách tạo mã vạch có chú thích bằng C++.

System::SharedPtr<BarcodeGenerator> generator = [&] { auto tmp_0 = System::MakeObject<BarcodeGenerator>(EncodeTypes::Code39Standard, System::String(u"1234567890"));
// đặt chú thích ở trên
tmp_0->get_Parameters()->get_CaptionAbove()->set_Text(u"Caption Above");
// thiết lập khả năng hiển thị
tmp_0->get_Parameters()->get_CaptionAbove()->set_Visible(true);
// đặt chú thích bên dưới
tmp_0->get_Parameters()->get_CaptionBelow()->set_Text(u"Caption Below");
// thiết lập khả năng hiển thị
tmp_0->get_Parameters()->get_CaptionBelow()->set_Visible(true);
// đặt độ phân giải
tmp_0->get_Parameters()->set_Resolution(300);
return tmp_0; }();
generator->Save(System::String(u"barcode_caption.jpg"));

Sau đây là mã vạch với chú thích ở trên và dưới.

Quét và đọc mã vạch bằng C++

Bây giờ hãy xem cách quét và đọc mã vạch bằng Aspose.BarCode cho C++. Sau đây là các bước để thực hiện tính năng này.

  • Tạo một thể hiện của lớp BarCodeReader.
  • Khởi tạo phiên bản BarCodeReader với tệp hình ảnh của mã vạch và đó là ký hiệu.
  • Sử dụng phương pháp BarCodeReader->Read() để truy xuất văn bản và loại mã vạch.

Mẫu mã sau đây cho biết cách quét và đọc mã vạch bằng C++.

// Tạo thể hiện của lớp BarcodeGenerator 
System::SharedPtr<BarCodeReader> reader = System::MakeObject<BarCodeReader>(u"Code128.png", DecodeType::Code128);
while (reader->Read())
{
	// Hiển thị văn bản mã và Loại ký hiệu
	System::Console::WriteLine(System::String(u"CodeText: ") + reader->GetCodeText());
	System::Console::Write(System::String(u"Symbology Type: ") + reader->GetCodeType());
}
reader->Close();

Đọc mã vạch với nhiều ký hiệu bằng C ++

Hầu hết thời gian, một hình ảnh chỉ chứa một ký hiệu mã vạch duy nhất. Tuy nhiên, trong một số trường hợp nhất định, hình ảnh có thể chứa mã vạch của nhiều ký hiệu cùng một lúc. Trong những trường hợp như vậy, bạn có thể cung cấp danh sách các ký hiệu mã vạch sẽ được quét và đọc.

Mẫu mã sau đây cho biết cách quét hình ảnh có nhiều ký hiệu mã vạch bằng C++.

// Đặt ký hiệu mã vạch
System::ArrayPtr<System::SharedPtr<BaseDecodeType>> objArray = System::MakeArray<System::SharedPtr<Aspose::BarCode::BarCodeRecognition::BaseDecodeType>>({ DecodeType::Code39Standard, DecodeType::Pdf417 });

// Khởi tạo phương thức BarCodeReader, Gọi Read() trong một vòng lặp và Hiển thị loại văn bản mã và ký hiệu
System::SharedPtr<BarCodeReader> reader = System::MakeObject<BarCodeReader>(u"RecognizingMultipleSymbologies.png", objArray);
while (reader->Read())
{
	System::Console::WriteLine(System::String(u"Codetext: ") + reader->GetCodeText());
	System::Console::WriteLine(System::String(u"Symbology type: ") + reader->GetCodeType());
}
reader->Close();

Sự kết luận

Trong bài viết này, bạn đã học cách tạo mã vạch với các ký hiệu khác nhau bằng C++. Ngoài ra, quy trình quét và đọc mã vạch cũng được thảo luận cùng với các mẫu mã C++. Bạn có thể khám phá thêm về API bằng cách sử dụng tài liệu.

Xem thêm