使用数字编码类型创建QR码

时间:2018-03-21 08:14:57

标签: ios swift qr-code

我有很长的int编号,我想用完全数字类型的编码将其编码为QRCode。现在我使用CIFilter(名称:“CIQRCodeGenerator”),但在这种情况下我不知道如何选择编码类型。有没有办法用选择的编码类型创建QR码?

2 个答案:

答案 0 :(得分:0)

The Apple documentation for CIQRCodeGenerator表示您应使用NSISOLatin1StringEncoding(Objective-C)或String.Encoding.isoLatin1(Swift)来编码QR码。

这是一个从Swift 4中的给定输入整数生成UIImage的快速示例。

enum QRInputEncoding: Int {
    case octal = 8
    case decimal = 10
    case hexadecimal = 16
}

func makeQRImage(input: Int, encoding: QRInputEncoding) -> UIImage? {
    let encoded = String(input, radix: encoding.rawValue)
    print(encoded)
    guard let data = encoded.data(using: .isoLatin1) else {
        return nil
    }
    let filter = CIFilter(name: "CIQRCodeGenerator", withInputParameters: ["inputMessage": data])
    return filter?.outputImage.map(UIImage.init(ciImage:))
}

makeQRImage(input: 100000, encoding: .octal) // prints 303240
makeQRImage(input: 100000, encoding: .decimal) // prints 100000
makeQRImage(input: 100000, encoding: .hexadecimal) // prints 186a0

这允许您更改生成的QR码输出,以便读者可以读取较少的字符,从而产生相同数字的较小QR码。

答案 1 :(得分:0)

这将生成QRCode图像并返回

xdata = ['group1' 'group1' 'group1' 'group1' 'group1' 'group1' 'group2' 'group2' 'group2' 'group3' 'group3' 'group3' 'group3' 'group3']';
ydata = rand(14,1);

scatter(xdata,ydata,'jitter')

您可以按照此代码执行其他操作:https://github.com/appcoda/QR-Code-Generator

教程:https://www.appcoda.com/qr-code-generator-tutorial