مولد رموز QR بلغة C++ باستخدام libqrencode و CQRcode

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مولد رموز QR بلغة C++: دليل شامل



أصبحت رموز QR جزءًا لا يتجزأ من الويب الحديث وتطبيقات الهاتف المحمول. تُستخدم للانتقال السريع عبر الروابط، ونقل بيانات الاتصال، والدفع، والمصادقة. إذا كنت تطور بلغة C++ وتحتاج إلى مولد رموز QR مدمج — بدون خدمات أو واجهات برمجة تطبيقات خارجية — فهذه المقالة من أجلك. سنشرح مكتبتين رئيسيتين: libqrencode (منخفضة المستوى، مرنة) و CQRcode (عالية المستوى، مع إخراج PNG).



لماذا إنشاء رموز QR بلغة C++؟

سيناريوهات الاستخدام الرئيسية:

  • التوليد دون اتصال في تطبيقات سطح المكتب (تتبع المنتجات، التذاكر).
  • التضمين في حلول الخادم بلغة C++ (أداء عالٍ).
  • العمل مع الموارد المحدودة (الأنظمة المدمجة، المتحكمات الدقيقة).
  • التحكم الكامل في عملية الترميز وتصحيح الأخطاء.


مكتبة libqrencode

libqrencode هي مكتبة C/C++ الأكثر شيوعًا لإنشاء رموز QR. وهي تنفذ معيار ISO/IEC 18004، وتدعم جميع الإصدارات (1–40) ومستويات تصحيح الأخطاء (L, M, Q, H). المكتبة مضغوطة، ولا تتطلب تبعيات، وتعمل على Linux و macOS و Windows (عبر MinGW أو MSVC).



التثبيت

# Linux (Debian/Ubuntu)sudo apt install libqrencode-dev

# macOS (Homebrew)brew install libqrencode

# Windows (vcpkg)vcpkg install libqrencode


مثال لتوليد رمز QR في مصفوفة بايت (صورة أبيض وأسود)

#include <qrencode.h>#include <iostream>#include <vector>

int main() { // إنشاء رمز QR للسلسلة "https://pythonlib.ru" QRcode *qr = QRcode_encodeString("https://pythonlib.ru", 0, QR_ECLEVEL_M, QR_MODE_8, 1); if (!qr) { std::cerr << "خطأ في إنشاء رمز QR"; return 1; }

int width = qr->width; std::cout << "حجم رمز QR: " << width << "x" << width << "";

// البيانات: qr->data — مصفوفة بايت (0 أو 1) for (int y = 0; y < width; ++y) { for (int x = 0; x < width; ++x) { bool black = (qr->data[y * width + x] & 0x01); std::cout << (black ? "██" : " "); } std::cout << ""; }

QRcode_free(qr); return 0;}

يقوم هذا الكود بإخراج رمز QR في وحدة التحكم باستخدام رموز. للحفظ بصيغة PNG أو BMP، يلزم معالجة إضافية.



مكتبة CQRcode

CQRcode هي طبقة علوية فوق libqrencode، والتي يمكنها حفظ النتيجة مباشرة في ملف PNG. مثالية إذا كنت بحاجة إلى ملف رسومي جاهز بدون كود إضافي. تدعم تخصيص اللون، وحجم الوحدة، وإضافة شعار مركزي.



التثبيت

# قم بتنزيل الكود المصدري من GitHub: https://github.com/rickyzhang82/CQRcode# البناء عبر CMake:mkdir build && cd buildcmake ..makesudo make install


مثال لحفظ رمز QR بصيغة PNG

#include <CQRcode.h>

int main() { // إنشاء كائن المولد CQRcode qr; // تعيين البيانات (URL، نص أو vCard) qr.setData("BEGIN:VCARDVERSION:3.0FN:PythonLibURL:https://pythonlib.ruEND:VCARD"); // ضبط المعلمات qr.setModuleSize(8); // حجم الوحدة الواحدة بالبكسل qr.setMargin(4); // الهامش (إطار أبيض) qr.setCorrectionLevel(QR_ECLEVEL_H); // أقصى تصحيح للأخطاء // حفظ في ملف if (qr.savePNG("pythonlib_qr.png")) { // بنجاح } else { // خطأ } return 0;}


مقارنة المكتبات

  • libqrencode — بسيطة، تعطي بيانات خام. تتطلب

توصيات