2015-07-11 21 views
13

我正在構建一個使用QR碼連接用戶的應用程序,類似於Snapchat如何允許用戶在Snapchat上添加對方。如何生成一個與Snapchat的Snapcode類似的圖像,並以相同的方式使用?

我一直希望能夠使用一種更美觀的QR碼替代方案,類似於Snapchat的Snapcode。任何關於如何在iOS應用程序中完成的想法?

+0

只是檢查在如何去。您是否成功製作了與捕捉代碼更類似的東西,而不是使用下面的解決方案? – Chaz

+0

嗨羅漢你有沒有得到解決方案,我想建立相同的。 –

+0

你找到什麼Rohan了嗎? – hyd00

回答

3

如果你不想使用QRCode 在所有你必須創建自己的模式來生成/閱讀圖像。

但也許你可以使用QRCode。

QRCode有一個error correction level。考慮到它,你仍然可以讓你的QRCode更符合你的要求美觀。請記住,「糾錯級別越高,存儲容量越少」,只要算法可以獲取所需的信息,您就可以自定義圖像。

當你生成QR碼圖像,你可以做這樣的:

雨燕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 
} 
相關問題