我需要使用objective-c生成QRCodes。是否有可用的库/框架?谢谢
答案 0 :(得分:0)
看看http://code.google.com/p/simplehttp/source/browse/trunk/qrencode/qrencode.c?r=78。
如果你可以从Objective-C调用C例程,那么你就可以了。
答案 1 :(得分:0)
zxing有一个iPhone的QR模块。
答案 2 :(得分:0)
如果您正在寻找Objective-C的编码器,我只是从Psytec实现中移植了一个。看看https://github.com/myang-git/QR-Code-Encoder-for-Objective-C。这是很新的,所以请告诉我任何意见。
答案 3 :(得分:0)
我使用这个简单的代码在我的一个项目中编码QRCode。您可以使用:
//
// QRCodeGeneratorViewController.h
//
//
// Created by Jhoney Lopes on 28/09/14.
// Copyright (c) 2014 Jhoney Lopes. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface QRCodeGeneratorViewController : UIViewController
@end
实施.m
//
// QRCodeGeneratorViewController.m
//
//
// Created by Jhoney Lopes on 28/09/14.
// Copyright (c) 2014 Jhoney Lopes. All rights reserved.
//
#import "QRCodeGeneratorViewController.h"
@interface QRCodeGeneratorViewController ()
@property (strong, nonatomic) IBOutlet UIImageView *qrImageView;
@end
@implementation QRCodeGeneratorViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self generateTheQRCodeImageFromDataBaseInfo:@"TEXT-WHAT-YOU-WANT-TO-CONVERT-IN-QRCODE"];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - QR Code Generator
- (CIImage *)createQRForString:(NSString *)qrString
{
// Need to convert the string to a UTF-8 encoded NSData object
NSData *stringData = [qrString dataUsingEncoding:NSUTF8StringEncoding];
// Create the filter
CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
// Set the message content and error-correction level
[qrFilter setValue:stringData forKey:@"inputMessage"];
[qrFilter setValue:@"H" forKey:@"inputCorrectionLevel"];
// Send the image back
return qrFilter.outputImage;
}
- (UIImage *)createNonInterpolatedUIImageFromCIImage:(CIImage *)image withScale:(CGFloat)scale
{
// Render the CIImage into a CGImage
CGImageRef cgImage = [[CIContext contextWithOptions:nil] createCGImage:image fromRect:image.extent];
// Now we'll rescale using CoreGraphics
UIGraphicsBeginImageContext(CGSizeMake(image.extent.size.width * scale, image.extent.size.width * scale));
CGContextRef context = UIGraphicsGetCurrentContext();
// We don't want to interpolate (since we've got a pixel-correct image)
CGContextSetInterpolationQuality(context, kCGInterpolationNone);
CGContextDrawImage(context, CGContextGetClipBoundingBox(context), cgImage);
// Get the image out
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
// Tidy up
UIGraphicsEndImageContext();
CGImageRelease(cgImage);
return scaledImage;
}
- (void)generateTheQRCodeImageFromDataBaseInfo:(NSString *)jsonString {
// Get the string
NSString *stringToEncode = jsonString;
// Generate the image
CIImage *qrCode = [self createQRForString:stringToEncode];
// Convert to an UIImage
UIImage *qrCodeImg = [self createNonInterpolatedUIImageFromCIImage:qrCode withScale:2*[[UIScreen mainScreen] scale]];
// And push the image on to the screen
self.qrImageView.image = qrCodeImg;
}