在Mac上使用ZXingObjC创建QR条形码

时间:2013-04-15 20:28:14

标签: objective-c macos cocoa qr-code

我正在尝试使用http://github.com/TheLevelUp/ZXingObjC在我的Mac应用中创建QR码。

适用于所有条形码类型,但在QRcode上返回nil! '结果'和'错误'都是空的。这是我的代码:

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);
}

它出了什么问题?

2 个答案:

答案 0 :(得分:4)

我有同样的问题。这是解决方法。

  1. 打开文件ZXingObjC\qrcode\encoder\ZXEncoder.m

  2. 找到这一行:int minPenalty = NSIntegerMax;。必须有警告:从'long'到'int'的隐式转换将9223372036854775807更改为-1 。这就是问题的原因。 NSIntegerMax在我的64位Mac上返回9223372036854775807minPenalty获得-1值(因为int类型无法存储如此大的数字)。

  3. NSIntegerMax替换为INT_MAX。它应该返回正确的值:2147483647。根据{{​​3}}的答案,这是32位计算机上的NSIntegerMax次返回。

  4. 运行该应用,您将获得您的二维码!

答案 1 :(得分:0)

尝试使用另一种方法,而不是使用HINTS,只使用:
[writer encode:@"yourmeganumber" format:kBarcodeFormatQRCode width:xxxx height:xxxx error:&error];

这对我有用 试试让我知道