Dự án này nhằm mục tiêu trở thành thư viện tạo mã QR Code tốt nhất và rõ ràng nhất trong nhiều ngôn ngữ. Mục tiêu chính là các tùy chọn linh hoạt và độ chính xác tuyệt đối. Mục tiêu phụ là kích thước triển khai gọn nhẹ và ghi chú tài liệu tốt.
Trang chủ với phiên bản JavaScript trực tiếp, mô tả chi tiết và so sánh với các đối thủ: https://www.nayuki.io/page/qr-code-generator-library
Tính năng
Tính năng chính:
- Có sẵn trong 6 ngôn ngữ lập trình, tất cả đều có chức năng gần như tương đương: Java, TypeScript/JavaScript, Python, Rust, C++, C
- Mã nguồn đáng kể ngắn hơn nhưng có nhiều ghi chú tài liệu hơn so với các thư viện cạnh tranh
- Hỗ trợ mã hóa tất cả 40 phiên bản (kích thước) và tất cả 4 cấp độ sửa lỗi, theo tiêu chuẩn QR Code Model 2
- Định dạng đầu ra: Các module/pixel gốc của biểu tượng QR
- Phát hiện mẫu trừng phạt giống như finder một cách chính xác hơn so với các triển khai khác
- Mã hóa văn bản số và chữ cái đặc biệt trong không gian nhỏ hơn so với văn bản tổng quát
- Mã nguồn mở dưới Giấy phép MIT hào nhoáng
Tham số thủ công:
- Người dùng có thể chỉ định các số phiên bản tối thiểu và tối đa được phép, sau đó thư viện sẽ tự động chọn phiên bản nhỏ nhất trong khoảng phù hợp với dữ liệu
- Người dùng có thể chỉ định mẫu mask thủ công, nếu không thì thư viện sẽ tự động đánh giá tất cả 8 mẫu và chọn ra mẫu tối ưu
- Người dùng có thể chỉ định cấp độ sửa lỗi tuyệt đối hoặc cho phép thư viện tăng nó nếu nó không làm tăng phiên bản
- Người dùng có thể tạo danh sách các đoạn dữ liệu thủ công và thêm các đoạn ECI
Tính năng nâng cao tùy chọn (Chỉ dành cho Java):
- Mã hóa văn bản Unicode tiếng Nhật trong chế độ kanji để tiết kiệm không gian so với UTF-8 bytes
- Tính toán chuyển đổi chế độ đoạn tối ưu cho văn bản có phần số/nhân văn/tổng quát/kanji kết hợp
Thêm thông tin về công nghệ mã QR và thiết kế của thư viện này có thể được tìm thấy trên trang chủ của dự án.
Ví dụ
Đoạn mã dưới đây viết bằng Java, nhưng các phiên bản ngôn ngữ khác được thiết kế với API và hành vi tương tự.
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.List;
import javax.imageio.ImageIO;
import io.nayuki.qrcodegen.*;
// Simple operation
QrCode qr0 = QrCode.encodeText("Hello, world!", QrCode.Ecc.MEDIUM);
BufferedImage img = toImage(qr0, 4, 10); // See QrCodeGeneratorDemo
ImageIO.write(img, "png", new File("qr-code.png"));
// Manual operation
List<QrSegment> segs = QrSegment.makeSegments("3141592653589793238462643383");
QrCode qr1 = QrCode.encodeSegments(segs, QrCode.Ecc.HIGH, 5, 5, 2, false);
for (int y = 0; y < qr1.size; y++) {
for (int x = 0; x < qr1.size; x++) {
(... paint qr1.getModule(x, y) ...)
}
}
Giấy phép
Bản quyền © 2022 Project Nayuki. (Giấy phép MIT)
https://www.nayuki.io/page/qr-code-generator-library
Được cấp phép miễn phí, không tính phí, cho bất kỳ cá nhân nào có được một bản sao của phần mềm này và các tệp tài liệu liên quan (gọi là “Phần mềm”), để sử dụng, sao chép, sửa đổi, kết hợp, xuất bản, phân phối, cấp phép thứ cấp và/hoặc bán các bản sao của Phần mềm, và cho phép các cá nhân có được Phần mềm làm như vậy, tuân thủ các điều kiện sau đây:
Thông báo bản quyền ở trên và thông báo cấp phép này phải được bao gồm trong tất cả các bản sao hoặc phần lớn của Phần mềm.
Phần mềm được cung cấp “như là”, không có bất kỳ bảo hành nào, rõ ràng hoặc ngụ ý, bao gồm nhưng không giới hạn vào các bảo hành về tính thương mại, tính phù hợp cho một mục đích cụ thể và không vi phạm. Trong bất kỳ trường hợp nào, tác giả hoặc chủ sở hữu bản quyền đều không chịu trách nhiệm cho bất kỳ khiếu nại, thiệt hại hoặc trách nhiệm khác nào, có nguồn gốc từ, liên quan đến hoặc phát sinh từ Phần mềm hoặc việc sử dụng hoặc giao dịch khác với Phần mềm.