مولد رموز QR بلغة Rust: الإنشاء والتكامل في تطبيقات الويب

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

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

ابدأ الدورة

مولد رموز QR بلغة Rust: أداة قوية لمشروعك

\n\n

أصبحت رموز QR جزءًا لا يتجزأ من الويب الحديث: الروابط، جهات الاتصال، كلمات مرور Wi-Fi — كل هذا يمكن ترميزه في صورة مربعة. إذا كنت تطور موقعًا تعليميًا أو خدمة بلغة Rust، فإن إنشاء رموز QR يمكن أن يكون وظيفة مفيدة. في هذه المقالة، سنستعرض مكتبة qrcode للغة Rust، ونتعلم كيفية إنشاء رموز QR، وتخصيص مظهرها، وتكاملها في تطبيقات الويب.

\n\n

Rust هي لغة برمجة نظامية تُقدر لأدائها وأمانها. تستخدم مكتبة qrcode جميع مزايا Rust: فهي سريعة، ولا تتطلب تبعيات خارجية، ويسهل دمجها في أي مشروع. دعنا نفهم كيفية استخدامها لإنشاء رموز QR.

\n\n

التثبيت والإعداد

\n\n

للعمل مع رموز QR في Rust، نحتاج إلى الكريت qrcode، وإذا كنا بحاجة لحفظ الصور، فالكريت image. أضفهم إلى ملف Cargo.toml:

\n\n
[dependencies]\nqrcode = "0.14"\nimage = "0.24"
\n\n

بعد ذلك، نفذ cargo build لتحميل التبعيات.

\n\n

مثال أساسي: إنشاء رمز QR في وحدة التحكم

\n\n

المثال الأول هو الأبسط: سنعرض رمز QR مباشرة في الطرفية. هذا مفيد للتصحيح أو عندما لا تكون هناك حاجة لحفظ الصورة.

\n\n
use qrcode::QrCode;\nuse qrcode::render::unicode;\n\nfn main() {\n    // إنشاء رمز QR من سلسلة نصية\n    let code = QrCode::new("https://pythonlib.ru").unwrap();\n\n    // عرضه باستخدام رموز Unicode\n    let image = code.render::<unicode::Dense1x2>()\n        .dark_color(unicode::Dense1x2::Dark)\n        .light_color(unicode::Dense1x2::Light)\n        .build();\n\n    println!("{}", image);\n}
\n\n

في هذا الكود:

\n
    \n
  • QrCode::new() — ينشئ رمز QR من سلسلة نصية. إذا كانت السلسلة طويلة جدًا، ستعيد الطريقة خطأ — استخدم .unwrap() فقط للأمثلة.
  • \n
  • render::<unicode::Dense1x2> — يختار عارض Unicode. يعرض الكود باستخدام رموز شبه رسومية.
  • \n
  • dark_color و light_color — يحددان رموز الوحدات الداكنة والفاتحة.
  • \n
\n\n

شغل البرنامج — سيظهر رمز QR في الطرفية يمكن مسحه ضوئيًا من الهاتف.

\n\n

حفظ رمز QR كصورة PNG

\n\n

للمشاريع الحقيقية، نحتاج إلى صورة وليس نصًا. تدعم مكتبة qrcode العرض إلى صور نقطية عبر الكريت image.

\n\n
use qrcode::QrCode;\nuse image::Luma;\n\nfn main() {\n    let code = QrCode::new("https://pythonlib.ru").unwrap();\n\n    // عرض كصورة (حجم الوحدة 8 بكسل)\n    let image = code.render::<Luma<u8>>()\n        .min_dimensions(200, 200) // الحد الأدنى للحجم\n        .dark_color(Luma([0u8]))   // أسود\n        .light_color(Luma([255u8])) // أبيض\n        .build();\n\n    // حفظ في ملف\n    image.save("qrcode.png").unwrap();\n    println!("تم حفظ رمز QR في qrcode.png");\n}
\n\n

هنا:

\n
    \n
  • Luma<u8> — نوع البكسل للصورة بالأبيض والأسود.
  • \n
  • min_dimensions(200, 200) — يحدد الحد الأدنى للعرض والارتفاع. يتم تحجيم رمز QR تلقائيًا.
  • \n
  • dark_color و light_color — ألوان الوحدات (أسود وأبيض).
  • \n
\n\n

بعد تنفيذ البرنامج، سيظهر ملف qrcode.png في جذر المشروع.

\n\n

تخصيص اللون والحجم

\n\n

يمكنك تغيير ألوان رمز QR باستخدام قيم RGB. على سبيل المثال، لنصنع رمز QR أزرق على خلفية صفراء:

\n\n
use qrcode::QrCode;\nuse image::Rgb;\n\nfn main() {\n    let code = QrCode::new("https://pythonlib.ru").unwrap();\n\n    let image = code.render::<Rgb<u8>>()\n        .min_dimensions(300, 300)\n        .dark_color(Rgb([0, 100, 200]))   // أزرق                    

توصيات