19/1/15

Hướng dẫn đọc và giải mã QR code bằng C#

Như các bạn cũng biết QR Code (Quick Response Code - mã phản hồi nhanh) được sử dụng để mã hóa dữ liệu thành hình ảnh, sau đó bạn sử dụng các phần mềm đọc mã QR Code để giải mã nội dung trên hình ảnh đó thành dữ liệu mà bạn đã mã hóa trước đó, với cách này bạn chỉ cần sử dụng điện thoại để quét qua hình ảnh là có thể có được dữ liệu mình cần.

Nếu muốn tạo thử một đoạn mã QR Code online bạn có thể dùng trang http://vietsofts.thangdc.com/qr-code-generator.html để tạo thử một mã QR Code của riêng mình.
Giờ mình sẽ đi vào phần kỹ thuật một chút cho các bạn có ý định muốn viết một ứng dụng nào đó có liên quan đến đọc và giải mã QR Code.

1. Đọc mã QR Code

Mã QR Code thật ra là một hình ảnh được tạo ra từ dữ liệu và một thuật toán để chuyển dữ liệu đó sang hình ảnh, nếu muốn tìm hiểu rõ hơn về thuật toán các bạn có thể search trên google để biết thêm, thật ra mình không nắm rõ thuật toán của nó, mình chỉ sử dụng thuật toán đọc trên internet thôi, còn đây là thư viện mà mình dùng để đọc và giải mã QR Code http://zxingnet.codeplex.com/, cái thư viện này có thể hỗ trợ winphone nếu bạn nào viết ứng dụng cho winphone có thể tham khảo link trên, mình không chuyên viết ứng dụng cho winphone nên không rõ cho lắm, khi nào có dịp mình sẽ tìm hiểu thêm, hoặc bạn nào có kinh nghiệm có thể chia sẽ cùng mọi người.

Sau khi tải thư viện Zxing cho .NET các bạn reference dll của nó và project của mình sau đó gọi hàm để sử dụng thôi, vậy hàm đọc mã QR Code của ZXing như thế nào và cách sử dụng ra sao?

Mã nguồn: https://github.com/thangdc/qr-code-generator

Bước 1: Bạn hãy reference những namespace sau vào project. 

using ZXing;
using ZXing.Common;
using System.IO;
using System.Drawing.Imaging;
using System.Windows.Forms;
using System.Drawing; 

Bước 2: Khởi tạo đối tượng trước khi sử dụng thư viện ZXing

 //Khai báo biến toàn cục 
private readonly IBarcodeReader barcodeReader; 

Bước 3: Khi ứng dụng được khởi chạy bạn khởi tạo đối tượng barcodeReader 

Bạn có thể bỏ nó trong Constructor hoặc hàm Load của Form

barcodeReader = new BarcodeReader(); 

Bước 4: Tại sự kiện khi người dùng nhấn vào nút "Giải mã" bạn hãy viết đoạn code sau: 


Đoạn code sau dùng để mở một hình chứa mã QR code mà người dùng sẽ chọn, sau khi chọn xong mã bạn hãy chuyển nó sang dạng Bitmap để cho thư viện Zxing xử lý, hoặc bạn dùng Bitmap này để hiện ra PictureBox cho người dùng nhìn thấy, sau đó bạn gọi hàm Decode với tham số là bitmap mà bạn chọn, sau đó nhận kết quả trả về từ XZing và hiện kết quả này lên textbox

Vậy là xong việc giải mã QR Code từ một hình ảnh, sau khi có kết quả bạn có thể xử lý kết quả tùy theo định dạng mà nó được mã hóa mà có cách giải mã phù hợp (đa số các mã QR Code là ở dạng văn bản, tức là khi đọc xong bạn giải mã là sẽ có ngay được nội dung mình cần và hiển thị, tuy nhiên có một số mã QR Code được mã hóa, sau đó mới mã hóa bằng QR Code nên dữ liệu khó đọc và bạn sẽ không hiểu nó là cái gì luôn)

2. Tạo mã QR Code 

Do bước 1 bạn đã thực hiện các thao tác khởi tạo nên bạn chỉ cần bắt đầu từ bước 3, tại sự kiện khi người dùng nhấn vào nút "Mã hóa" bạn hãy viết đoạn code sau:


Ý tưởng của đoạn mã là bạn nhập một nội dung bất kỳ, sau đó sử dụng thư việc ZXing để tạo ra một đối tượng bitmap, từ đối tượng bitmap này bạn có thể hiển thị ra cho người dùng bằng cách dùng Picturebox hoặc lưu đối tượng này ra tập tin hình ảnh.

Đó là toàn bộ nội dung mình muốn truyền đạt cho các bạn những người mới bắt đầu làm quen và lập trình mã QR Code, mình làm thì được nhưng mà viết hướng dẫn cho mọi người thì có thể cách truyền đạt đôi khi các bạn cũng khó nắm bắt, do đó nếu chưa hiểu hoặc có vấn đề gì cần làm rõ thì cứ comment bên dưới mình sẽ giải thích theo cách hiểu của mình để các bạn có thể nắm rõ hơn, hoặc nếu các bạn có kinh nghiệm hay những chia sẽ những vấn đề mà các bạn quan tâm thì mình cũng sẽ rất vui lòng lắng nghe.
Chia sẻ
  • Share to Facebook
  • Share to Twitter
  • Share to Google+
  • Share to Stumble Upon
  • Share to Evernote
  • Share to Blogger
  • Share to Email
  • Share to Yahoo Messenger
  • More...

0 nhận xét

 
© 2011 Phần mềm việt - Công nghệ 24h - congnghe24h - phanmemviet
Designed by BlogThietKe Cooperated with Duy Pham
Released under Creative Commons 3.0 CC BY-NC 3.0
Chính sáchĐiều khoản
Back to top