مولد QR-كود على Rust: مكتبة qr_code

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

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

ابدأ الدورة

مولد QR-كود على Rust: مكتبة qr_code



أصبحت رموز QR جزءًا لا يتجزأ من الويب الحديث وتطبيقات الهاتف المحمول. تُستخدم للتبادل السريع للروابط وجهات الاتصال وبيانات الدفع وغيرها من المعلومات. إذا كنت تطور باستخدام Rust وتريد إضافة إنشاء رموز QR إلى مشروعك، فإن مكتبة qr_code هي واحدة من أفضل الحلول. في هذه المقالة، سنشرح بالتفصيل كيفية تثبيت هذه المكتبة وتهيئتها واستخدامها لإنشاء رموز QR مباشرة في كود Rust.



ما هي مكتبة qr_code؟

qr_code هي مكتبة Rust نقية لإنشاء رموز QR (الإصدار 2) بدون تبعيات خارجية. تتيح لك إنشاء رموز QR من بيانات نصية، وضبط مستوى تصحيح الأخطاء، وحجم الوحدة، واللون. تدعم المكتبة الإخراج بتنسيق SVG وPNG (عبر image) ورسومات ASCII للطرفية. المزايا الرئيسية:

  • أداء عالٍ (Rust بدون GC).
  • استهلاك ضئيل للذاكرة.
  • دعم جميع المستويات الأربعة لتصحيح الأخطاء (L, M, Q, H).
  • تخصيص مرن لمظهر رمز QR.


التثبيت

أضف التبعية إلى ملف Cargo.toml الخاص بك:

[dependencies]qr_code = "0.2.0"

إذا كنت بحاجة إلى إخراج PNG، فقم بتثبيت crate image أيضًا:

image = "0.24"

بعد ذلك، نفذ cargo build لتنزيل المكتبة وتجميعها.



مثال أساسي: إنشاء رمز QR بتنسيق SVG

أبسط طريقة للحصول على رمز QR هي حفظه بتنسيق SVG المتجه. فيما يلي مثال عملي بسيط:

use qr_code::QrCode;

fn main() { // إنشاء رمز QR من نص let code = QrCode::new("https://pythonlib.ru").unwrap(); // توليد سلسلة SVG بحجم وحدة 8 بكسل let svg = code.to_svg().with_width(8).to_string(); // حفظ في ملف std::fs::write("qrcode.svg", svg).unwrap(); println!("تم حفظ رمز QR في qrcode.svg");}

بعد التشغيل، ستحصل على ملف qrcode.svg يمكن فتحه في المتصفح أو إدراجه في صفحة HTML.



ضبط مستوى تصحيح الأخطاء

يحدد مستوى التصحيح مدى قدرة رمز QR على التلف مع بقائه قابلاً للقراءة. تدعم المكتبة أربعة مستويات:

  • ErrorCorrection::Low — يمكن استعادة 7% من البيانات.
  • ErrorCorrection::Medium — 15%.
  • ErrorCorrection::Quartile — 25%.
  • ErrorCorrection::High — 30%.

مثال على الاستخدام:

use qr_code::{QrCode, ErrorCorrection};

let code = QrCode::with_error_correction( "كود سري", ErrorCorrection::High).unwrap();

let svg = code.to_svg().with_width(10).to_string();std::fs::write("secret_qr.svg", svg).unwrap();


إنشاء رمز QR بتنسيق PNG (صورة نقطية)

للإخراج بتنسيق PNG، ستحتاج إلى crate image. أولاً، أضفه إلى Cargo.toml، ثم استخدم الكود التالي:

use qr_code::QrCode;use image::{Luma, ImageBuffer};

fn main() { let code = QrCode::new("Rust رائع!").unwrap(); // إنشاء الصورة: كل وحدة = 10 بكسل let size = code.width() * 10; let mut img = ImageBuffer::new(size as u32, size as u32); // تعبئة الخلفية باللون الأبيض for pixel in img.pixels_mut() { *pixel = Luma([255u8]); } // رسم الوحدات السوداء for y in 0..code.width() { for x in 0..code.width() { if code[(x, y)] { let px = x as u32 * 10; let py = y as u32 * 10; for dy in 0..10 { for dx in 0..10 { img.

توصيات