- vừa được xem lúc

[NodeJs] Tạo QR Code trong nodeJs với qrcode

0 0 34

Người đăng: Cua một càng

Theo Viblo Asia

Tạo mã QR Code trong nodejs với qrcode

QR Code là gì?

QR Code (Quick Response Code) là dạng mã vạch hai chiều có thể được đọc bởi một máy đọc mã vạch hay smartphone có chức năng quét mã vạch, hay thông qua ứng dụng của bên thứ 3 (zalo, facebook, ...). Mã QR là một biểu tượng hai chiều, nó được phát minh vào năm 1994 bởi công ty Denso Wave (Nhật Bản). Thông tin thêm các bạn có thể xem tại đây

Tạo QR code với qrcode

Cài đặt thư viện qrcode

Đầu tiên chúng ta cần tạo mới một project. Và cài đặt thư viện express trên comand line với lệnh

npm install express --save

Tiếp theo chúng ta sử dụng lệnh sau trên command line để cài đặt thư viện qrcode

npm install qrcode --save

Hoặc bạn có thể cài đặt global với lệnh

npm install -g qrcode

Sử dụng thư viện qrcode

Bạn có thể tạo được một mã QR đơn giản với một vài dòng code như sau

const express = require('express');
const QRCode = require('qrcode');
const app = express(); app.get('/',async(req,res)=>{ let img=''; let qr= await QRCode.toDataURL('I am Cuamotcang!'); console.log(qr); img = `<image src= " `+qr+ `" />` return res.send(img);
}); app.listen(3000, ()=>{ console.log("app is running at port 3000")
})

Ví dụ trên mình đang tạo mã QR cho câu 'I am Cuamotcang'. Khi truy cập vào địa chỉ http://localhost:3000/ bạn sẽ thấy kết quả như sau. Bạn có thể lấy điện thoại ra để quét thử nhé! ?

Ngoài ra thông tin mã QR được in ra trong comand line bởi câu lệnh console.log(qr) ở trên sẽ như thế này:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAYAAABRRIOnAAAAAklEQVR4AewaftIAAAOPSURBVO3BQY4jSQIDQWdA//+ybx/mwFMACUk1Nb00i38w84/DTDnMlMNMOcyUw0w5zJTDTDnMlMNMOcyUw0w5zJTDTDnMlMNMefGmJPwklXck4ZNUbpLwk1TecZgph5lymCkvPkzlk5LwSSo3SXgiCU3lRuWTkvBJh5lymCmHmfLiy5LwhMoTSWgqLQk3KjcqLQlN5R1JeELlmw4z5TBTDjPlxV8mCU2lJaEloam0JPw/OcyUw0w5zJQXfxmVG5WWhBuVloSWhKbyX3aYKYeZcpgpL75M5Scl4ZtUPknlNznMlMNMOcyUFx+WhH+TSktCU2lJuElCU2lJaCo3SfjNDjPlMFMOM+XFm1R+kyTcJOEnqfyXHGbKYaYcZkr8gzckoam0JHySyk0SnlD5piR8kso3HWbKYaYcZkr8gy9KQlNpSbhRaUloKjdJaCo3SXhC5YkkNJWWhKbykw4z5TBTDjPlxb9M5SYJTyShqdwk4R1JuFF5QuUmCTcq7zjMlMNMOcyUFx+WhKZyk4QblSdUbpLQVFoSmspNEt6RhKZyo9KS8EmHmXKYKYeZ8uJNSWgqLQlN5UalJaGp3CShqdwkoam0JNyotCS0JDSVloSWhBuVbzrMlMNMOcyUF7+cSktCU3lC5QmVmyTcqLQkNJWbJNyofNJhphxmymGmvPhlkvBEEprKTRJuVG6S0FRaEloS3qFyk4Sm8o7DTDnMlMNMefHLqNwk4SYJTeVG5SYJTaUloam0JDSVmyQ0lZaEbzrMlMNMOcyUFz8sCU8koancJOGTVJ5Iwk0SnkhCU/mmw0w5zJTDTIl/8B+WhKbSktBUWhI+SeWJJNyo3CShqbzjMFMOM+UwU168KQk/SaWptCQ8odKScKPSknCThKbyjiR802GmHGbKYaa8+DCVT0rCTRKaSkvCTRJuVN6h8oTKEyqfdJgph5lymCkvviwJT6h8ksoTKi0JTyThHUloKj/pMFMOM+UwU178ZZLQVG5UblSeSMKNSkvCEyotCU3lHYeZcpgph5ny4i+j0pLwhMpNEppKU7lJQlO5SUJT+abDTDnMlMNMefFlKt+kcqPSktBUbpJwk4Sm0pLwDpWfdJgph5lymCkvPiwJPykJTaUl4R0qTyShqbQkPJGEn3SYKYeZcpgp8Q9m/nGYKYeZcpgph5lymCmHmXKYKYeZcpgph5lymCmHmXKYKYeZcpgp/wPa0IYoBgikYgAAAABJRU5ErkJggg==


Ngoài dạng Data URI ra thì qrcode còn hỗ trợ tạo mã qrcode với các dạng khác nhau như: String (toString), canvas (toCanvas), file (toFile), file stream (toFileStream). Sau đây là ví dụ tạo mã QR dưới dạng file:

app.get('/',async(req,res)=>{ await QRCode.toDataURL('cmc.png', 'I am Cuamotcang!'); return res.send('hello');
});

Và đây là kết quả thu được truy cập http://localhost:3000/. Một file hình mới có tên cmc.png đã được tạo

qrcode option

qrcode hỗ trợ 4 kiểu ký tự đầu vào khác nhau, và với mỗi loại thì sẽ tương ứng với số ký tự tối đa có thể mã hóa được.

Kiểu dữ liệu Loại ký tự Khả năng mã hóa
Số đơn thuần 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Tối đa 7.089 ký tự
Số và chữ 0–9, A–Z (upper-case only), space, $, % , +, -, ... Tối đa 4.296 ký tự
Số nhị phân (8bit) Ký tự từ bộ JIS X 0208 Tối đa 2.953 byte
Kanji/Kana Ký tự từ bộ ISO/IEC 8859-1 Tối đa 1.817 ký tự

Ta cũng có thể trộn các kiểu mã hóa lại với nhau như trong ví dụ dưới đây:
app.get('/',async(req,res)=>{ let img=''; const segs = [ { data: 'CUAMOTCANG', mode: 'alphanumeric' }, { data: '123', mode: 'numeric' } ] let qr= await QRCode.toDataURL(segs); img = `<image src= " `+qr+ `" />` return res.send(img);
});

Ngoài ra chúng ta cũng có thể thay đổi màu sắc, kích thước, đuôi file, ... của mã QR được tạo ra. Chi tiết xem tại đây. Dưới đây là một ví dụ minh họa:

app.get('/',async(req,res)=>{ let img=''; const segs = [ { data: 'CUAMOTCANG', mode: 'alphanumeric' }, { data: '123', mode: 'numeric' } ] let qr= await QRCode.toDataURL(segs, { color: { dark: '#00F', light: '#0000' }, width: 300, margin:10, scale: 10 }); img = `<image src= " `+qr+ `" />` return res.send(img);
});

Lời kết

Đây là bài viết đầu tay của mình, hy vọng mọi người thích bài viết này. Trong bài viết còn có nhiều thiếu sót. Mong mọi người góp ý thêm ạ. Cám ơn mọi người đã đọc bài viết này. ?

Tham khảo

https://www.npmjs.com/package/qrcode

https://vi.wikipedia.org/wiki/Mã_QR

https://aidcvn.com/ma-qr-code-la-gi.html

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cách mình "hack" được vào hẹ thống của SMAS để xem điểm.

Cách mà mình "hack" được vào hệ thống của SMAS. Thật ra dùng từ hack cũng không đúng lắm, chỉ là một vài trick để lừa hệ thống mà thôi.

0 0 145

- vừa được xem lúc

Áp dụng kiến trúc 3 Layer Architecture vào project NodeJS

The problem encountered. Các framework nodejs phổ biết như Express cho phép chúng ta dễ dàng tạo ra Resful API xử lí các request từ phía client một cách nhanh chóng và linh hoạt.

0 0 80

- vừa được xem lúc

Router, Controller trong Express

Mở đầu. Xin chào các bạn mình đã quay trở lại rồi đây, tiếp tục với series Nodejs cơ bản thì hôm nay mình sẽ giới thiệu đến các bạn Express Router và Controller.

0 0 40

- vừa được xem lúc

Xây dựng CRUD RESTful API sử dụng Node, Express, MongoDB.

Introduction. Trong phạm vi bài viết này chúng ta sẽ cùng tìm hiểu về cách tạo restful api với Node, Express và MongoDB. . Xử lý các hoạt động crud.

0 0 225

- vừa được xem lúc

Rate time limit trong NodeJS

Chào các bạn, lại là mình đây. Hôm nay mình xin giới thiệu tới các bạn một kỹ thuật rất hay ho và hữu ích đó là Rate Limiting. 1. Rate Limiting là gì.

0 0 62

- vừa được xem lúc

Bước đầu tìm hiểu về Nodejs với Socket

Khởi tạo Node Js. Một dự án chạy bằng Node là có Express js. Qua bài https://expressjs.com/en/starter/generator.

0 0 38