如何解决QRCode生成OFFLINE
| 是否有一个Objective-C库可让我离线生成QRCode? 谢谢解决方法
参见:https://github.com/jverkoey/ObjQREncoder#readme
使用
#import <QREncoder/QREncoder.h>
UIImage* image = [QREncoder encode:@\"http://www.google.com/\"];
, 在Mavericks和iOS7中,QR码生成是Core Image的一部分。您只需使用CIQRCodeGenerator过滤器。在Github上,您可以找到一个用于iOS的类。我已经对该代码进行了修改,以获取以下与OS X兼容的代码:
NSString *website = @\"http://stackoverflow.com/\";
NSData *urlAsData = [website dataUsingEncoding:NSUTF8StringEncoding];
CIFilter *filter = [CIFilter filterWithName:@\"CIQRCodeGenerator\"];
[filter setDefaults];
[filter setValue: urlAsData forKey:@\"inputMessage\"];
[filter setValue:@\"M\" forKey:@\"inputCorrectionLevel\"];
CIImage *outputImage = [filter valueForKey:kCIOutputImageKey];
如果要绘制CIImage,则有几种可能性。您可以这样创建NSImage
:
CIContext *context = [[NSGraphicsContext currentContext] CIContext];
CGImageRef cgImage = [context createCGImage:outputImage
fromRect:[outputImage extent]];
NSImage *image = [[NSImage alloc] initWithCGImage:cgImage size:NSZeroSize];
但是此图像通常会比您想要的小得多。我相信QR码中的每个黑点都只是一个像素。不完全是您想要的。要放大图像而不使其模糊,请执行以下操作:
NSSize largeSize = NSMakeSize(image.size.width * 10,image.size.height * 10);
[image setScalesWhenResized:YES];
NSImage *largeImage = [[NSImage alloc] initWithSize:largeSize];
[largeImage lockFocus];
[image setSize:largeSize];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationNone];
[image drawAtPoint:NSZeroPoint fromRect:CGRectMake(0,largeSize.width,largeSize.height) operation:NSCompositeCopy fraction:1.0];
[largeImage unlockFocus];
largeImage
是您可以显示的结果图像。
如果要解码QR,请按照本博客中的说明使用AVFoundation。不幸的是,目前似乎仅iOS7支持此功能。
, 只是一种生成QR码的简单方法:
(CIImage *)createQRForString:(NSString *)qrString {
NSData * stringData = [qrString dataUsingEncoding:NSISOLatin1StringEncoding];
CIFilter * qrFilter = [CIFilter filterWithName:@ \“ CIQRCodeGenerator \”];
[qrFilter setValue:stringData forKey:@ \“ inputMessage \”];
返回qrFilter.outputImage;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。