我正在尝试使用 http://github.com/TheLevelUp/ZXingObjC 在我的 Mac 应用程序上创建二维码。
它适用于每种条形码类型,但在 QRcode 上返回 nil! 'result' 和 'error' 都是空的。这是我的代码:
NSError* error = nil;
ZXMultiFormatWriter* writer = [[ZXMultiFormatWriter alloc] init];
ZXBitMatrix* result = [writer encode:@"12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678"
format:kBarcodeFormatQRCode
width:1750
height:1750 hints:[[ZXEncodeHints alloc] init] error:&error];
if (result) {
CGImageRef image = [[ZXImage imageWithMatrix:result] cgimage];
self.image.image = [[NSImage alloc] initWithCGImage:image size:NSMakeSize(1750, 1750)];
} else {
NSLog(@"error: %@", error);
}
有什么问题吗?
最佳答案
我遇到过同样的问题。这是解决方法。
ZXingObjC\qrcode\encoder\ZXEncoder.m
int minPenalty = NSIntegerMax;
。必须有一个警告: 从 'long' 到 'int' 的隐式转换将 9223372036854775807 更改为 -1 。这就是问题的原因。 NSIntegerMax
在我的 64 位 Mac 上返回 9223372036854775807
并且 minPenalty
获取 -1
值(因为 int
类型无法存储这么大的数字)。 NSIntegerMax
替换为 INT_MAX
。它应该返回正确的值: 2147483647
。根据 this question 的答案,这是 NSIntegerMax
在 32 位机器上返回的数字。 关于objective-c - 在 Mac 上使用 ZXingObjC 创建二维码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16024161/