Kotlin में QR कोड जनरेटर: ZXing लाइब्रेरी और कार्यान्वयन टिप्स

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kotlin में ZXing के साथ QR कोड जनरेटर

QR कोड (Quick Response) आधुनिक डिजिटल दुनिया का अहम हिस्सा बन गए हैं। इनका उपयोग लिंक, संपर्क जानकारी, Wi-Fi पासवर्ड और अन्य डेटा को तेज़ी से शेयर करने के लिए किया जाता है। अगर आप Kotlin में एप्लिकेशन डेवलप कर रहे हैं — चाहे वह Android, सर्वर-साइड (Ktor, Spring) या डेस्कटॉप (Compose Desktop) के लिए हो — तो आपको QR कोड जनरेट करने की सुविधा चाहिए। इस लेख में हम सीखेंगे कि कैसे लोकप्रिय ZXing (Zebra Crossing) लाइब्रेरी का उपयोग करके Kotlin में एक सरल और प्रभावी QR कोड जनरेटर बनाया जाए।

ZXing क्यों चुनें?

ZXing एक मल्टी-फंक्शनल लाइब्रेरी है जो बारकोड और QR कोड को पढ़ने और लिखने के लिए उपयोग की जाती है। यह Java में लिखी गई है, जो इसे Kotlin के साथ पूरी तरह से संगत बनाती है। मुख्य लाभ:

  • विभिन्न फॉर्मेट्स का समर्थन: QR कोड, Data Matrix, Aztec, PDF417 और अन्य।
  • उच्च प्रदर्शन और अनुकूलन क्षमता।
  • सक्रिय समुदाय और नियमित अपडेट।
  • Kotlin प्रोजेक्ट्स में आसान इंटीग्रेशन।

लाइब्रेरी को कनेक्ट करना

सबसे पहले, अपने build.gradle.kts में डिपेंडेंसी जोड़ें (यदि आप Gradle का उपयोग कर रहे हैं):

dependencies {
    implementation("com.google.zxing:core:3.5.3")
    implementation("com.google.zxing:javase:3.5.3") // BufferedImage के लिए
}

अगर आप Ktor या Spring पर सर्वर एप्लिकेशन लिख रहे हैं, तो ये डिपेंडेंसी काम करेंगी। Android के लिए आप android-core मॉड्यूल का उपयोग कर सकते हैं, लेकिन ज्यादातर मामलों में core ही काफी है।

बेसिक QR कोड जनरेटर

चलिए एक QRCodeGenerator क्लास बनाते हैं जो टेक्स्ट लेकर BufferedImage के रूप में QR कोड इमेज लौटाएगा।

import com.google.zxing.BarcodeFormat
import com.google.zxing.EncodeHintType
import com.google.zxing.qrcode.QRCodeWriter
import com.google.zxing.common.BitMatrix
import java.awt.image.BufferedImage
import java.util.*

class QRCodeGenerator {

    fun generateQRCode(text: String, width: Int = 300, height: Int = 300): BufferedImage {
        // एन्कोडिंग और एरर करेक्शन लेवल सेट करना
        val hints = EnumMap<EncodeHintType, Any>(EncodeHintType::class.java).apply {
            put(EncodeHintType.CHARACTER_SET, "UTF-8")
            put(EncodeHintType.ERROR_CORRECTION, com.google.zxing.qrcode.decoder.ErrorCorrectionLevel.H) // High
            put(EncodeHintType.MARGIN, 1) // QR कोड के चारों ओर मार्जिन
        }

        val writer = QRCodeWriter()
        val bitMatrix: BitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, width, height, hints)

        // BitMatrix को BufferedImage में बदलना
        val image = BufferedImage(width, height, BufferedImage.TYPE_INT_RGB)
        for (x in 0 until width) {
            for (y in 0 until height) {
                image.setRGB(x, y, if (bitMatrix.get(x, y)) 0xFF000000.toInt() else 0xFFFFFFFF.toInt())
            }
        }
        return image
    }
}

व्याख्या:

  • QRCodeWriter — ZXing का क्लास जो डॉट्स का मैट्रिक्स बनाता है।
  • BitMatrix — बाइनरी मैट्रिक्स, जहाँ true का मतलब काला पिक्सेल है।
  • हम UTF-8 एन्कोडिंग और अधिकतम एरर करेक्शन लेवल (H — 30% क्षति) सेट करते हैं।
  • इमेज ARGB फॉर्मेट में काले-सफेद रंग योजना के साथ सेव होती है।

फ़ाइल में सेव करना (PNG)

जनरेट किए गए QR कोड को फ़ाइल में सेव करने के लिए javax.imageio.ImageIO का उपयोग करें:

import java.io.File
import javax.imageio.ImageIO

fun saveQRCodeToFile(text: String, filePath: String) {
    val generator = QRCodeGenerator()
    val image = generator.generateQRCode(text)
    val outputFile = File(filePath)
    ImageIO.write(image, "png", outputFile)
    println("QR कोड सेव हो गया: ${outputFile.absolutePath}")
}

// उपयोग का उदाहरण
fun main() {
    saveQRCodeToF                    

अनुशंसाएँ