已經可以從iOS SDK呼叫method來掃描QRCode,那麼是否也能從iOS SDK來產生 QRCode (QRCode Generator)?
原來CoreImage Framework已能做到!
直接來看程式碼,把它寫成可重複使用的Library吧~
/** Theme: QRCode Generator IDE: Xcode 8 Language: Objective C Date: 106/08/17 Author: HappyMan Blog: https://cg2010studio.com/ */ // .h檔 #import <Foundation/Foundation.h> @interface SDQRCodeGenerator : NSObject +(UIImage *)qrCodeWithString:(NSString *)string width:(CGFloat)width; @end // .m檔 #import "SDQRCodeGenerator.h" #import <CoreImage/CoreImage.h> @implementation SDQRCodeGenerator +(UIImage *)qrCodeWithString:(NSString *)string width:(CGFloat)width { CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; [filter setDefaults]; NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:data forKey:@"inputMessage"]; CIImage *outputImage = [filter outputImage]; return [self createNonInterpolatedImageFromCIImage:outputImage withSize:width]; } +(UIImage *)createNonInterpolatedImageFromCIImage:(CIImage *)image withSize:(CGFloat)size { CGFloat screenScale = [[UIScreen mainScreen] scale]; CGRect extent = image.extent; CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent)); size_t width = scale * CGRectGetWidth(extent); size_t height = scale * CGRectGetHeight(extent); UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, screenScale); CGContextRef bitmapContextRef = UIGraphicsGetCurrentContext(); CIContext *context = [CIContext contextWithOptions:nil]; CGImageRef bitmapImage = [context createCGImage:image fromRect:extent]; CGContextSetInterpolationQuality(bitmapContextRef, kCGInterpolationNone); CGContextScaleCTM(bitmapContextRef, scale, scale); CGContextDrawImage(bitmapContextRef, extent, bitmapImage); UIImage *retVal = UIGraphicsGetImageFromCurrentImageContext(); CGImageRelease(bitmapImage); CGContextRelease(bitmapContextRef); return retVal; } // 使用方式 qrCodeImageView.image = [SDQRCodeGenerator qrCodeWithString:@"Happy Girl" width:qrCodeImageView.frame.size.width];
現在超商很常掃描QR Code或Bar Code,這樣就不必記複雜的代碼囉~
之前開發過好幾支超商與百貨公司的App,這個已是必備功能!
Comments on: "[iOS] 產生 QRCode (QRCode Generator)" (1)
這時要製作地球天堂App,可以派上用場! 😉
讚讚