مولد رموز QR بلغة Kotlin: دليل كامل
أصبحت رموز QR جزءًا لا يتجزأ من العالم الرقمي الحديث. تُستخدم للتبادل السريع للمعلومات: من روابط المواقع إلى بيانات الاتصال وكلمات مرور Wi-Fi. في هذه المقالة، سننظر في كيفية إنشاء مولد رموز QR خاص بك بلغة Kotlin باستخدام المكتبة الشهيرة ZXing («Zebra Crossing»). Kotlin، كونها لغة حديثة وموجزة، مناسبة تمامًا لتطوير كل من تطبيقات الخادم وتطبيقات Android المحمولة. ستتعلم كيفية إنشاء رموز QR بأنواع مختلفة، وتخصيص مظهرها، ودمجها في مشاريعك.
لماذا Kotlin و ZXing؟
Kotlin هي لغة مكتوبة بشكل ثابت (statically typed) تعمل فوق JVM، وتدعمها Google بنشاط لتطوير Android. بناء جملتها (syntax) نظيف ومعبّر، مما يجعل الكود أكثر قابلية للقراءة وأقل عرضة للأخطاء. مكتبة ZXing هي المعيار الفعلي للعمل مع رموز QR والباركود في نظام Java/Kotlin البيئي. تدعم العديد من التنسيقات (QR Code، Data Matrix، Aztec وغيرها) وتوفر إمكانيات مرنة للتخصيص.
التثبيت والإعداد
للبدء، أضف التبعية (dependency) إلى ملف build.gradle.kts الخاص بك (إذا كنت تستخدم Gradle):
// لمشروع JVMimplementation("com.google.zxing:core:3.5.3")implementation("com.google.zxing:javase:3.5.3")
// لمشروع Android (عادةً ما يكفي core)implementation("com.google.zxing:core:3.5.3")إذا كنت تعمل مع Maven، أضف التبعيات المقابلة في ملف pom.xml.
مثال أساسي: إنشاء رمز QR بسيط
لنقم بإنشاء دالة بسيطة تقوم بإنشاء رمز QR من سلسلة نصية وحفظه كصورة PNG.
import com.google.zxing.BarcodeFormatimport com.google.zxing.qrcode.QRCodeWriterimport com.google.zxing.client.j2se.MatrixToImageWriterimport java.nio.file.Paths
fun generateQRCode(text: String, filePath: String, width: Int = 300, height: Int = 300) { val writer = QRCodeWriter() val bitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, width, height) val path = Paths.get(filePath) MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path) println("تم حفظ رمز QR بنجاح في: $filePath")}
fun main() { generateQRCode("https://pythonlib.ru", "qrcode_pythonlib.png")}شرح الكود:
QRCodeWriter()— ينشئ مثيلاً للكاتب (writer) خاص برموز QR.encode()— يقوم بتشفير السلسلة النصية إلى مصفوفة بت (bit matrix) (صورة أبيض وأسود).MatrixToImageWriter.writeToPath()— طريقة ملائمة لحفظ المصفوفة في ملف.
تخصيص اللون والحجم
افتراضيًا، يكون رمز QR أبيض وأسود. يمكنك تغيير ألوانه باستخدام MatrixToImageConfig. إليك مثال برمز أخضر على خلفية بيضاء:
import com.google.zxing.client.j2se.MatrixToImageConfigimport java.awt.Colorimport java.awt.image.BufferedImage
fun generateColoredQRCode(text: String, filePath: String, foregroundColor: Color = Color.BLACK, backgroundColor: Color = Color.WHITE) { val writer = QRCodeWriter() val bitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, 300, 300) val config = MatrixToImageConfig(foregroundColor.rgb, backgroundColor.rgb) val bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix, config) // حفظ BufferedImage في ملف val outputFile = java.io.File(filePath) javax.imageio.ImageIO.write(bufferedImage, "PNG", outputFile) println("تم حفظ رمز QR الملون في: $filePath")}
fun main() { generateColoredQRCode("Hello, Kotlin!", "colored_qr.png", foregroundColor = Color(0x00AA00),