توليد رموز QR بلغة Java باستخدام ZXing (Zebra Crossing)
\n\nأصبحت رموز QR جزءًا لا يتجزأ من الويب الحديث وتطبيقات الهواتف المحمولة. فهي تتيح نقل الروابط وبيانات الاتصال والمعلومات النصية وغيرها الكثير بسرعة. في عالم Java، تُعد مكتبة ZXing (Zebra Crossing) واحدة من أشهر وأكثر المكتبات استقرارًا للعمل مع رموز QR.
\n\nفي هذه المقالة، سنشرح بالتفصيل كيفية إضافة ZXing إلى مشروعك، وإنشاء رمز QR بسيط، وضبط مظهره، وحفظه في ملف. ستكون المادة مفيدة لكل من المبتدئين والمطورين ذوي الخبرة الذين يرغبون في إضافة وظيفة توليد رموز QR إلى تطبيقات Java الخاصة بهم.
\n\nما هي ZXing؟
\n\nZXing (تُنطق "zebra crossing") هي مكتبة مفتوحة المصدر لمعالجة الرموز الشريطية أحادية وثنائية الأبعاد. وهي مكتوبة بلغة Java وتدعم العديد من التنسيقات: رمز QR، Data Matrix، Aztec، PDF417 وغيرها. الإمكانيات الرئيسية:
\n\n- \n
- توليد (إنشاء) رموز QR من النصوص، عناوين URL، جهات الاتصال، إلخ. \n
- قراءة (فك تشفير) رموز QR من الصور. \n
- ضبط اللون والحجم ومستوى تصحيح الأخطاء. \n
- الإخراج بتنسيقات رسومية مختلفة (PNG, JPEG, SVG). \n
- دعم Java SE و Android بالإضافة إلى لغات JVM الأخرى (Kotlin, Scala). \n
المكتبة مدعومة بنشاط من قبل المجتمع وتُستخدم في آلاف المشاريع حول العالم.
\n\nإضافة ZXing إلى المشروع
\n\nأسهل طريقة لإضافة ZXing إلى مشروعك هي استخدام نظام البناء Maven أو Gradle. إذا كنت تستخدم Maven، أضف التبعية التالية إلى ملف pom.xml:
<dependency>\n <groupId>com.google.zxing</groupId>\n <artifactId>core</artifactId>\n <version>3.5.3</version>\n</dependency>\n<dependency>\n <groupId>com.google.zxing</groupId>\n <artifactId>javase</artifactId>\n <version>3.5.3</version>\n</dependency>\n\n\nبالنسبة لـ Gradle (build.gradle):
\n\nimplementation 'com.google.zxing:core:3.5.3'\nimplementation 'com.google.zxing:javase:3.5.3'\n\n\nتحتوي الوحدة core على الفئات الأساسية للعمل مع الرموز، بينما تحتوي javase على أدوات مساعدة لـ Java SE (مثل العمل مع الصور).
إنشاء رمز QR بسيط
\n\nلنلقِ نظرة على مثال أساسي: توليد رمز QR يحتوي على النص "Hello, PythonLib!".
\n\nimport com.google.zxing.BarcodeFormat;\nimport com.google.zxing.WriterException;\nimport com.google.zxing.common.BitMatrix;\nimport com.google.zxing.qrcode.QRCodeWriter;\n\nimport javax.imageio.ImageIO;\nimport java.awt.image.BufferedImage;\nimport java.io.File;\nimport java.io.IOException;\n\npublic class QRCodeGenerator {\n public static void main(String[] args) {\n String text = "Hello, PythonLib!";\n int width = 300;\n int height = 300;\n\n QRCodeWriter qrCodeWriter = new QRCodeWriter();\n try {\n BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);\n\n BufferedImage qrImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);\n for (int x = 0; x < width; x++) {\n for (int y = 0; y < height; y++) {\n qrImage.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);\n }\n }\n\n File outputFile = new File("qrcode.png");\n ImageIO.write(qrImage, "png", outputFile);\n System.out.println("تم حفظ رمز QR في الملف: " + outputFile.getAbsolutePath());\n\n } catch (WriterException | IOException e) {\n e.printStackTrace();\n }\n }\n}\n\n\nيقوم هذا الكود بإنشاء رمز QR أبيض وأسود بحجم 300×300 بكسل وحفظه في ملف qrcode.png.