0 0
تهران ، ولیعصر
021-987654

ایجاد کد QR با Node.js در 2021

ایجاد کد QR با Node.js در 2021

کد QR جز چیز هایی هست که من شخصا دوست دارم. اگر چیزی را ببینم که قرار است بعداً به خاطر بیاورم یا بررسی کنم ، مخصوصاً وقتی در جاده هستم ، گرفتن یک عکس سریع بسیار ساده تر از به خاطر سپردن یک URL و تایپ سریع آن روی صفحه کلید است.اگه علاقه دارید که از ویرایشگر Vs code برای برنامه نویسی استفاده کنید اینجا کلیک کنید

در صورت نیاز به تولید کدهای QR ، برای مشتریتان خود، یک پروژه جاوا اسکریپت خیلی کاربردی به اسم node-qrcode وجود دارد که در ادامه فرمت های مختلفی که برای ایجاد کد QR در خروجی تولید می کند را بررسی می کنیم.

با نصب کتابخانه کار را شروع می کنیم :

yarn add qrcode

با کمک پروژه QR code، می توانید با یک عنصر <img> یک URI داده برای کد QR ایجاد کنید :

const generateQR = async text => {
  try {
    console.log(await QRCode.toDataURL(text))
  } catch (err) {
    console.error(err)
  }
}

generateQR("https://sadino.ir");

/*
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAYAAABRRIOnAAAAAklEQVR4AewaftIAAAOMSURBVO3BQY7kRgADwWSh///l9B584EmAIPV41mBE/IOZfx1mymGmHGbKYaYcZsphphxmymGmHGbKYaYcZsphphxmymGmHGbKh4eS8JNUWhKayh1JaCotCU3ljiT8JJUnDjPlMFMOM+XDy1TelIQ7ktBUrqi0JNyRhKZyReVNSXjTYaYcZsphpnz4siTcofKbqHxTEu5Q+abDTDnMlMNM+fCXU2lJaEloKnckoak0lf+Tw0w5zJTDTPnwl0vCFZWWhKbyRBKayt/sMFMOM+UwUz58mco3qVxJQlP5TVR+k8NMOcyUw0z58LIk/KQkNJU7ktBUWhLelITf7DBTDjPlMFM+PKTyX1JpSWgqdyThTSp/k8NMOcyUw0z58FASmsqVJPykJDSVKyotCXckoalcSUJTaUm4Q+WJw0w5zJTDTIl/8EVJuKLSktBUnkhCU2lJeELljiS8SeVNh5lymCmHmRL/4Acl4YpKS0JTuSMJTeVKEppKS8ITKi0JV1SuJKGpPHGYKYeZcpgp8Q9elIQrKi0JV1RaEppKS0JT+aYkNJWWhCsqLQlPqDxxmCmHmXKYKR8eSkJTuUOlJaEl4Q6VloSm0pLQVK4k4ZtU7kjCmw4z5TBTDjMl/sEDSXhC5Y4kXFFpSWgqV5LwJpUrSWgqV5LQVN50mCmHmXKYKR++TOWOJHxTEu5QaUloKi0JLQlN5UoS7khCU3niMFMOM+UwUz68TKUloam0JDSVK0m4Q6Uloam8SeVKEppKS8IVlZaENx1mymGmHGZK/IMHktBUWhKuqFxJwhMqdyShqbQkfJNKS8IVlTcdZsphphxmyoeHVK6oPKFyJQlN5UoSvknljiT8JoeZcpgph5ny4aEk/CSVK0m4Q6Ul4YpKS8KVJDSVO1SuJKGpPHGYKYeZcpgpH16m8qYkvEmlJeGOJNyh8qYkNJU3HWbKYaYcZsqHL0vCHSpPqLQk3KHSknBHEn5SEprKE4eZcpgph5ny4X9O5YrKHSotCXeo/GaHmXKYKYeZ8uEvp9KS0FSuJKGpNJUrKi0JTeVKEn6Tw0w5zJTDTPnwZSr/pSQ0laZyJQlN5YkkXFFpSfhJh5lymCmHmfLhZUn4SUm4onIlCU8koam0JDSVK0loKleS8KbDTDnMlMNMiX8w86/DTDnMlMNMOcyUw0w5zJTDTDnMlMNMOcyUw0w5zJTDTDnMlMNM+Qeve5EOUrEhtwAAAABJRU5ErkJggg==
*/

ایجاد داده های تصویر کد QR

اگر می خواهید کد QR را از طریق Node.js در ترمینال مشاهده کنید، شما می‌توانید این کار را با رد کردن یک پیکربندی شی انجام دهید :

const generateQR = async text => {
  try {
    console.log(await QRCode.toString(text, {type: 'terminal'}))
  } catch (err) {
    console.error(err)
  }
}
qr code terminal 1024x646 1

ایجاد تصویر روی کد QR

می توانید برای کد QR یک تصویر PNG ، SVG یا UTF8 ایجاد کنید:

const generateQR = async text => {
  try {
    await QRCode.toFile('./sadino-qr-code.png', text);
  } catch (err) {
    console.error(err)
  }
}

داده های دودویی در کد QR

کدهای QR می توانند داده های باینری دلخواه مبتنی بر بایت را در خود نگه دارند. اگر بخواهید با تبدیل داده ها به یک رشته جاوا اسکریپت یک QR Code دودویی ایجاد کنید ، کدگذاری بطور صحیح انجام نخواهد شد زیرا رمزگذاری رشته بایتی اضافی، اضافه می کند. درعوض ، باید یک آرایه Uint8ClampedAr یا سازگار یا یک بافر Node را به شرح زیر رد کنید :

// Regular array example
// WARNING: Element values will be clamped to 0-255 even if your data contains higher values.
const QRCode = require('qrcode')
QRCode.toFile(
  'foo.png',
  [{ data: [253,254,255], mode: 'byte' }],
  ...options...,
  ...callback...
)
// Uint8ClampedArray example
const QRCode = require('qrcode')

QRCode.toFile(
  'foo.png',
  [{ data: new Uint8ClampedArray([253,254,255]), mode: 'byte' }],
  ...options...,
  ...callback...
)
// Node Buffer example
// WARNING: Element values will be clamped to 0-255 even if your data contains higher values.
const QRCode = require('qrcode')

QRCode.toFile(
  'foo.png',
  [{ data: Buffer.from([253,254,255]), mode: 'byte' }],
  ...options...,
  ...callback...
)

ظرفیت کد QR

ظرفیت کد QR به نسخه نماد و سطح تصحیح خطا بستگی دارد. همچنین حالت های رمزگذاری ممکن است بر میزان داده های ذخیره شده تأثیر بگذارد.

کد QR دارای 40 نسخه است. هر نسخه دارای تعداد مختلفی از ماژول ها (نقاط سیاه و سفید) است که اندازه نماد را مشخص می کند. اندازه نسخه 1 21×21 ، برای نسخه 2 25×25 است. نسخه بالاتر، اطلاعات ذخیره شده بیشتر و البته نماد کد QR بزرگتری خواهد داشت.

جدول زیر حداکثر تعداد نویسه های ذخیره شده را در هر حالت رمزگذاری و برای هر سطح تصحیح خطا نشان می دهد.

Mode L M Q H
Numeric 7089 5596 3993 3057
Alphanumeric 4296 3391 2420 1852
Byte 2953 2331 1663 1273
Kanji 1817 1435 1024 784

توجه: حداکثر تعداد نویسه ها می تواند هنگام استفاده از حالت های مختلف متفاوت باشد.نسخه کد QR را می توان از طریق ویژگی options.version تنظیم کرد.اگر نسخه ای مشخص نشده باشد ، از مقدار مناسب تری استفاده می شود. تا زمانی که نسخه خاصی لازم نباشد، این گزینه نیازی نیست تنظیم شود.

ایجاد کد QR روی Canvas

اگر از ابزاری مانند Browserify و webpack استفاده می کنید، می توانید از کد qr در سمت کلاینت استفاده کنید:

var canvas = document.getElementById('canvas');
const generateQR = async text => {
  try {
    await QRCode.toCanvas(canvas, text)
  } catch (err) {
    console.error(err)
  }
}

generateQR("https://sadino.ir");

این کتابخانه جذاب همچنین به شما امکانات خیلی بیشتری از آنچه که اینجا نشان دادیم می دهد مثلا می توانید داده های باینری و گزینه های مختلف ایجاد کنید. اگر نیاز به ایجاد QR دارید ، لینک پروژه را در ابتدا مقاله قرار داده ایم.

امیدوارم از این مقاله راضی باشید و مورد توجه تان قرار گرفته باشد

فرید مهدوی
فرید مهدوی

عاشق دنیای رباتیک و طراحی سایت چند سالی هستش که تو این زمینه ها فعالیت می کنم، سعی میکنم تجربیات و آموزش های بروز براتون قرار بدم.

محصولات مرتبط
پاسخ دهید

آدرس ایمیل شما منتشر نخواهد شد.قسمتهای مورد نیاز علامت گذاری شده اند *