【问题标题】:How can I generate an image that will be similar to Snapchat's Snapcode and will be used in the same way?如何生成类似于 Snapchat 的 Snapcode 并以相同方式使用的图像?
【发布时间】:2015-07-11 14:29:39
【问题描述】:

我正在构建一个使用二维码连接用户的应用,类似于 Snapchat 允许用户在 Snapchat 上相互添加的方式。

我希望使用一种更美观的替代 QR 码,类似于 Snapchat 的 Snapcode。知道如何在 iOS 应用程序中完成它吗?

【问题讨论】:

  • 只是检查这是怎么回事。您是否成功地制作了比使用下面的解决方案更类似于 snapcode 的东西?
  • 嗨,Rohan,你有没有得到解决方案,我想构建相同的。
  • 罗汉有什么发现吗?
  • @RakshitSoni:你们找到解决方案了吗?
  • @hyd:你们找到解决方案了吗?

标签: ios swift qr-code snapchat scannable-code


【解决方案1】:

如果您根本不想使用 QRCode,则必须创建自己的模式来生成/读取图像。

但也许你可以使用二维码。

QRCode 有一个error correction level。考虑到它,您仍然可以按照您的要求使您的 QRCode 更美观。只要记住“纠错级别越高,存储容量越小”,您就可以自定义您的图像,只要算法可以获得您需要的信息。

当您生成 QRCode 图像时,您可以这样做:

Swift 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
}

【讨论】:

    猜你喜欢
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多