iOS生成二維碼與條形碼

*************************具體方法***************************

- (UIImage *)generateQRCode:(NSString *)code width:(CGFloat)width height:(CGFloat)height {

// 生成條形碼圖片

CIImage *qrcodeImage;

NSData *data = [code dataUsingEncoding:NSUTF8StringEncodingallowLossyConversion:false];

/*dataUsingEncoding可以替換為其他形式,其枚舉為:

typedef NSUInteger NSStringEncoding;

NS_ENUM(NSStringEncoding) {

NSASCIIStringEncoding = 1, /* 0..127 only */

NSNEXTSTEPStringEncoding = 2,

NSJapaneseEUCStringEncoding = 3,

NSUTF8StringEncoding = 4,

NSISOLatin1StringEncoding = 5,

NSSymbolStringEncoding = 6,

NSNonLossyASCIIStringEncoding = 7,

NSShiftJISStringEncoding = 8,? ? ? ? ? /* kCFStringEncodingDOSJapanese */

NSISOLatin2StringEncoding = 9,

NSUnicodeStringEncoding = 10,

NSWindowsCP1251StringEncoding = 11,? ? /* Cyrillic; same as AdobeStandardCyrillic */

NSWindowsCP1252StringEncoding = 12,? ? /* WinLatin1 */

NSWindowsCP1253StringEncoding = 13,? ? /* Greek */

NSWindowsCP1254StringEncoding = 14,? ? /* Turkish */

NSWindowsCP1250StringEncoding = 15,? ? /* WinLatin2 */

NSISO2022JPStringEncoding = 21,? ? ? ? /* ISO 2022 Japanese encoding for e-mail */

NSMacOSRomanStringEncoding = 30,

NSUTF16StringEncoding = NSUnicodeStringEncoding,? ? ? /* An alias for NSUnicodeStringEncoding */

NSUTF16BigEndianStringEncoding = 0x90000100,? ? ? ? ? /* NSUTF16StringEncoding encoding with explicit endianness specified */

NSUTF16LittleEndianStringEncoding = 0x94000100,? ? ? /* NSUTF16StringEncoding encoding with explicit endianness specified */

NSUTF32StringEncoding = 0x8c000100,

NSUTF32BigEndianStringEncoding = 0x98000100,? ? ? ? ? /* NSUTF32StringEncoding encoding with explicit endianness specified */

NSUTF32LittleEndianStringEncoding = 0x9c000100? ? ? ? /* NSUTF32StringEncoding encoding with explicit endianness specified */

};

二維碼生成時,此處也可以替換*/

CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

[filter setValue:data forKey:@"inputMessage"];

[filter setValue:@"H" forKey:@"inputCorrectionLevel"];

qrcodeImage = [filter outputImage];

// 消除模糊

CGFloat scaleX = width / qrcodeImage.extent.size.width; // extent 返回圖片的frame

CGFloat scaleY = height / qrcodeImage.extent.size.height;

CIImage *transformedImage = [qrcodeImage imageByApplyingTransform:CGAffineTransformScale(CGAffineTransformIdentity, scaleX, scaleY)];

return [UIImage imageWithCIImage:transformedImage];

}

- (UIImage *)generateBarCode:(NSString *)code width:(CGFloat)width height:(CGFloat)height {

// 生成二維碼圖片

CIImage *barcodeImage;

NSData *data = [code dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:false];

CIFilter *filter = [CIFilter filterWithName:@"CICode128BarcodeGenerator"];

[filter setValue:data forKey:@"inputMessage"];

barcodeImage = [filter outputImage];

// 消除模糊

CGFloat scaleX = width / barcodeImage.extent.size.width; // extent 返回圖片的frame

CGFloat scaleY = height / barcodeImage.extent.size.height;

CIImage *transformedImage = [barcodeImage imageByApplyingTransform:CGAffineTransformScale(CGAffineTransformIdentity, scaleX, scaleY)];

return [UIImage imageWithCIImage:transformedImage];

}


**********************使用方法******************************

UIImageView *txmImage=[[UIImageView alloc]init];

txmImage.frame=CGRectMake(10, 10, WIDTH-20, 60);

txmImage.image=[self generateBarCode:@"tiaoxingma" width:txmImage.frame.size.width height:txmImage.frame.size.height];

[self.view addSubview:txmImage];

UIImageView *ewmImage=[[UIImageView alloc]init];

ewmImage.frame=CGRectMake(WIDTH/4, 80, WIDTH/2, WIDTH/2);

ewmImage.image=[self generateQRCode:@"erweima" width:ewmImage.frame.size.width height:ewmImage.frame.size.height];

[self.view addSubview:ewmImage];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容