مكتبة QR-Code-generator للغة C++: دليل كامل
\n\nأصبحت رموز QR جزءًا لا يتجزأ من العالم الرقمي الحديث. تُستخدم في الإعلانات، والخدمات اللوجستية، وأنظمة الدفع، وحتى في المشاريع التعليمية. إذا كنت تطور تطبيقًا بلغة C++ وتريد إضافة وظيفة توليد رموز QR، فإن مكتبة QR-Code-generator هي أداة بسيطة وخفيفة وفعالة. في هذه المقالة، سنشرح بالتفصيل ما هي هذه المكتبة، وكيفية تثبيتها، وسنعرض أمثلة عملية للكود.
\n\nما هي QR-Code-generator؟
\nQR-Code-generator هي مكتبة متعددة المنصات بلغة C++ (متاحة أيضًا بلغات C وPython وJava)، تتيح لك إنشاء رموز QR بإصدارات مختلفة ومستويات تصحيح أخطاء متنوعة. المزايا الرئيسية:
\n- \n
- لا تتطلب تبعيات خارجية (تعمل "مباشرة من الصندوق"). \n
- تدعم جميع الإصدارات الأربعين لرموز QR (من 21×21 إلى 177×177 وحدة). \n
- مستويات تصحيح الأخطاء: L (7%)، M (15%)، Q (25%)، H (30%). \n
- الإخراج كسلسلة نصية (
char*) أو مصفوفة ثنائية. \n - دعم Unicode (UTF-8) والأوضاع الرقمية/الأبجدية. \n
المكتبة مثالية للتضمين في تطبيقات الخادم، أو أدوات سطر الأوامر، أو المشاريع التعليمية بلغة C++.
\n\nالتثبيت والتضمين
\nعملية التثبيت بسيطة للغاية. يمكنك تنزيل الملفات المصدرية من مستودع Nayuki على GitHub أو استخدام مدير الحزم (مثل vcpkg). دعنا نستعرض الطريقة اليدوية:
\n- \n
- قم بتنزيل الملفين
qrcodegen.hppوqrcodegen.cpp. \n - ضعهما في مجلد مشروعك. \n
- قم بتضمين ملف الرأس في الكود:
#include "qrcodegen.hpp". \n - قم بتجميع المشروع باستخدام العلم
-std=c++11أو إصدار أحدث. \n
مثال على التجميع باستخدام g++:
\ng++ -std=c++11 main.cpp qrcodegen.cpp -o qr_generator\n\nوظائف API الأساسية
\nتوفر المكتبة واجهة برمجة تطبيقات (API) بسيطة ولكنها قوية. الوظائف الرئيسية:
\n- \n
qrcodegen::QrCode::encodeText(text, ecl)— لتشفير سلسلة نصية إلى رمز QR بمستوى تصحيح محدد. \n qrcodegen::QrCode::encodeBinary(data, ecl)— لتشفير البيانات الثنائية. \n getSize()— لإرجاع حجم رمز QR (عدد الوحدات في العرض). \n getModule(x, y)— للتحقق مما إذا كانت الوحدة (البكسل) مضبوطة عند الإحداثيات (x, y). \n
مثال 1: توليد رمز QR وعرضه في وحدة التحكم
\nأبسط مثال هو إنشاء رمز QR لسلسلة نصية وعرضه كرسومات ASCII. هذا الكود مفيد لتصحيح الأخطاء أو العرض التوضيحي في الطرفية.
\n#include <iostream>\n#include <string>\n#include "qrcodegen.hpp"\n\nusing namespace std;\nusing namespace qrcodegen;\n\nint main() {\n // إنشاء رمز QR للنص بمستوى تصحيح H (30%)\n const QrCode qr = QrCode::encodeText("https://pythonlib.ru", QrCode::Ecc::HIGH);\n \n // عرض رمز QR في وحدة التحكم (رموز █ ومسافة)\n for (int y = 0; y < qr.getSize(); y++) {\n for (int x = 0; x < qr.getSize(); x++) {\n cout << (qr.getModule(x, y) ? "██" : " ");\n }\n cout << endl;\n }\n return 0;\n}\nالنتيجة: سيتم عرض رمز QR في وحدة التحكم يمكن مسحه ضوئيًا بواسطة أي هاتف ذكي. المستوى H يوفر أقصى مقاومة للتلف.
\n\nمثال 2: إنشاء رمز QR ببيانات ثنائية
\nأحيانًا تحتاج إلى تشفير ليس نصًا، بل بايتات عشوائية (مثل البيانات المسلسلة). استخدم encodeBinary.
#include <vector>\n#include "qrcodegen.hpp"\n\nusing namespace qrcodegen;\n\nint main() {\n // تحضير البيانات الثنائية (مصفوفة بايت)\n std::vector<uint8