2015-07-11 4 views
13

मैं ऐसे ऐप का निर्माण कर रहा हूं जो उपयोगकर्ताओं को जोड़ने के लिए क्यूआर कोड का उपयोग करता है, इसी तरह स्नैपचैट उपयोगकर्ताओं को स्नैपचैट पर एक दूसरे को जोड़ने की अनुमति देता है।मैं एक छवि कैसे उत्पन्न कर सकता हूं जो स्नैपचैट के स्नैपकोड के समान होगा और उसी तरह उपयोग किया जाएगा?

मैं क्यूआर कोड के लिए अधिक सौंदर्यपूर्ण रूप से आकर्षक विकल्प का उपयोग करने की उम्मीद कर रहा था, स्नैपचैट के स्नैपकोड के समान कुछ। आईओएस एप्लिकेशन में यह कैसे किया जा सकता है इसके बारे में कोई विचार?

+0

बस यह कैसे चला गया पर में जाँच। क्या आप नीचे दिए गए समाधान का उपयोग करने से स्नैपकोड के समान कुछ और करने में सफल रहे? – Chaz

+0

हाय रोहन ने आपको इस पर समाधान प्राप्त किया था, मैं इसे बनाना चाहता हूं। –

+0

क्या आपको रोहन कुछ मिला? – hyd00

उत्तर

3

यदि आप सभी पर QRCode का उपयोग नहीं करना चाहते हैं तो आपको छवि को उत्पन्न/पढ़ने के लिए अपना स्वयं का पैटर्न बनाना होगा।

लेकिन शायद आप QRCode का उपयोग कर सकते हैं।

क्यूआरकोड में error correction level है। इसे ध्यान में रखते हुए आप अभी भी अपने क्यूआरकोड को अधिक सौंदर्यपूर्ण रूप से प्रसन्न कर सकते हैं जैसा आपने पूछा था। बस ध्यान रखें "त्रुटि सुधार स्तर जितना अधिक होगा, कम भंडारण क्षमता" और जब तक एल्गोरिदम आपको आवश्यक जानकारी प्राप्त कर लेता है तब तक आप अपनी छवि को कस्टमाइज़ कर सकते हैं।

आप QRCode छवि जेनरेट कर रहे हैं जब आप इस तरह यह कर सकते हैं:

स्विफ्ट 3,1

private enum InputCorrectionLevel: String { 
    case low = "L" // 7% 
    case medium = "M" // 15% 
    case high = "Q" // 25% 
    case ultra = "H" // 30% 
} 

private enum QRCodeGenerationError { 
    case initializingFilter 
    case applyingFilter 
} 

func qrCode(from string: String, withSize frameSize: CGSize) throws -> CIImage { 
    guard let filter = CIFilter(name: "CIQRCodeGenerator") else { 
     throw QRCodeGenerationError.initializingFilter 
    } 

    let data = string.data(using: .isoLatin1, allowLossyConversion: false) 
    filter.setValue(data, forKey: "inputMessage") 
    filter.setValue(InputCorrectionLevel.low.rawValue, forKey: "inputCorrectionLevel") 

    guard let outputImage = filter.outputImage else { 
     throw QRCodeGenerationError.applyingFilter 
    } 

    let scaleX = frameSize.width/outputImage.extent.size.width 
    let scaleY = frameSize.height/outputImage.extent.size.height 
    let qrCodeCIImage = outputImage.applying(CGAffineTransform(scaleX: scaleX, y: scaleY)) 
    return qrCodeCIImage 
} 
संबंधित मुद्दे

 संबंधित मुद्दे