我一直在使用zxing来解码QRCodes。我现在也让编码器工作起来,可以创建包含编码数据的QRCode。
我想问是否有人知道如何将QRCOde数据转换为png图像。
如果你的应用程序可以在线访问,那么你可以使用http://www.tag.cx/qr-codes/
许多用户正在寻找一种在iPhone上以编程方式编码二维码和其他代码的方法。这些功能尚未从Android移植到iPhone,如Zxing线程中所述:https://groups.google.com/group/zxing/browse_thread/thread/7325ed13cc49122c/aba6f4545c5c3583?lnk=gst&q=编码+到+png+iphone#aba6f44545c5c3583
请参阅此问题以进行进一步讨论:在iPhone和Android 上生成2D条形码(例如QR码、数据矩阵、PDF417)
您可以使用Phonegap在此处使用插件对QR条形码进行编码。按照说明操作,你应该会成功。
Javascript很简单,直接取自https://github.com/phonegap/phonegap-plugins/
window.plugins.barcodeScanner.encode(BarcodeScanner.Encode.TEXT_TYPE, "http://www.nytimes.com", function(success) {
alert("encode success: " + success);
}, function(fail) {
alert("encoding failed: " + fail);
}, {yesString: "Install"}
);
psytec编码器(http://groups.google.com/group/zxing/msg/27e421daeb510d0f)工作良好。我在生产中使用它。使用类似libpng的东西从它生成的位数组转换为png应该是相对直接的。在设备上,我浏览它生成的位数组,并直接绘制到CG上下文中。
如果您正在使用phonegap并需要离线支持,也许jquery qrcode会有所帮助。
从这个Github链接下载QR码生成器的示例代码,它更简单、更容易。将该示例项目中使用的资源文件添加到您的项目中。
如果你只想显示UIImageview
中生成的二维码,你可以直接在示例项目中使用该代码
或
如果你需要带有二维码的png文件,这意味着你可以从UIImageview
的图像中获得NSData
,并将NSData
转换为png文件并使用它。
编辑这篇文章也有类似的问题,我链接到了这个答案。
我在一个项目中使用了这个简单的代码来编码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;
}