مولد رموز QR بلغة Rust: أداة قوية لمشروعك
\n\nأصبحت رموز QR جزءًا لا يتجزأ من الويب الحديث: الروابط، جهات الاتصال، كلمات مرور Wi-Fi — كل هذا يمكن ترميزه في صورة مربعة. إذا كنت تطور موقعًا تعليميًا أو خدمة بلغة Rust، فإن إنشاء رموز QR يمكن أن يكون وظيفة مفيدة. في هذه المقالة، سنستعرض مكتبة qrcode للغة Rust، ونتعلم كيفية إنشاء رموز QR، وتخصيص مظهرها، وتكاملها في تطبيقات الويب.
Rust هي لغة برمجة نظامية تُقدر لأدائها وأمانها. تستخدم مكتبة qrcode جميع مزايا Rust: فهي سريعة، ولا تتطلب تبعيات خارجية، ويسهل دمجها في أي مشروع. دعنا نفهم كيفية استخدامها لإنشاء رموز QR.
التثبيت والإعداد
\n\nللعمل مع رموز QR في Rust، نحتاج إلى الكريت qrcode، وإذا كنا بحاجة لحفظ الصور، فالكريت image. أضفهم إلى ملف Cargo.toml:
[dependencies]\nqrcode = "0.14"\nimage = "0.24"\n\nبعد ذلك، نفذ cargo build لتحميل التبعيات.
مثال أساسي: إنشاء رمز QR في وحدة التحكم
\n\nالمثال الأول هو الأبسط: سنعرض رمز QR مباشرة في الطرفية. هذا مفيد للتصحيح أو عندما لا تكون هناك حاجة لحفظ الصورة.
\n\nuse 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
شغل البرنامج — سيظهر رمز QR في الطرفية يمكن مسحه ضوئيًا من الهاتف.
\n\nحفظ رمز QR كصورة PNG
\n\nللمشاريع الحقيقية، نحتاج إلى صورة وليس نصًا. تدعم مكتبة qrcode العرض إلى صور نقطية عبر الكريت image.
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
بعد تنفيذ البرنامج، سيظهر ملف qrcode.png في جذر المشروع.
تخصيص اللون والحجم
\n\nيمكنك تغيير ألوان رمز QR باستخدام قيم RGB. على سبيل المثال، لنصنع رمز QR أزرق على خلفية صفراء:
\n\nuse 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])) // أزرق