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