您好,登錄后才能下訂單哦!
這篇文章主要介紹了iOS如何生成二維碼圖片,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
1.普通二維碼
1.1 方法
/** 生成二維碼 QRStering:字符串 imageFloat:二維碼圖片大小 */ + (UIImage *)createQRCodeWithString:(NSString *)QRStering withImgSize:(CGFloat)imageFloat;
1.2 方法實現(xiàn)
/** 生成二維碼 QRStering:字符串 imageFloat:二維碼圖片大小 */ + (UIImage *)createQRCodeWithString:(NSString *)QRString withImgSize:(CGFloat)imageFloat{ CIFilter *filter = [CIFilter filterWithName:@"XiaoGuiGe"]; [filter setDefaults]; NSString *getString = QRString; NSData *dataString = [getString dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:dataString forKey:@"inputMessage"]; ///獲取濾鏡輸出的圖像 CIImage *outImage = [filter outputImage]; UIImage *imageV = [self imageWithImageSize:imageFloat withCIIImage:outImage]; //返回二維碼圖像 return imageV; }
2.中間帶有小圖標的二維碼
2.1 方法
/** 生成二維碼(中間有小圖片) QRStering:字符串 centerImage:二維碼中間的image對象 */ + (UIImage *)createImgQRCodeWithString:(NSString *)QRString centerImage:(UIImage *)centerImage;
2.2 方法實現(xiàn)
/** 生成二維碼(中間有小圖片) QRStering:所需字符串 centerImage:二維碼中間的image對象 */ + (UIImage *)createImgQRCodeWithString:(NSString *)QRString centerImage:(UIImage *)centerImage{ // 創(chuàng)建濾鏡對象 CIFilter *filter = [CIFilter filterWithName:@"XiaoGuiGe"]; // 恢復(fù)濾鏡的默認屬性 [filter setDefaults]; // 將字符串轉(zhuǎn)換成 NSdata NSData *dataString = [QRString dataUsingEncoding:NSUTF8StringEncoding]; // 設(shè)置過濾器的輸入值, KVC賦值 [filter setValue:dataString forKey:@"inputMessage"]; // 獲得濾鏡輸出的圖像 CIImage *outImage = [filter outputImage]; // 圖片小于(27,27),我們需要放大 outImage = [outImage imageByApplyingTransform:CGAffineTransformMakeScale(20, 20)]; // 將CIImage類型轉(zhuǎn)成UIImage類型 UIImage *startImage = [UIImage imageWithCIImage:outImage]; // 開啟繪圖, 獲取圖形上下文 UIGraphicsBeginImageContext(startImage.size); // 把二維碼圖片畫上去 (這里是以圖形上下文, 左上角為(0,0)點 [startImage drawInRect:CGRectMake(0, 0, startImage.size.width, startImage.size.height)]; // 再把小圖片畫上去 CGFloat icon_imageW = 200; CGFloat icon_imageH = icon_imageW; CGFloat icon_imageX = (startImage.size.width - icon_imageW) * 0.5; CGFloat icon_imageY = (startImage.size.height - icon_imageH) * 0.5; [centerImage drawInRect:CGRectMake(icon_imageX, icon_imageY, icon_imageW, icon_imageH)]; // 獲取當前畫得的這張圖片 UIImage *qrImage = UIGraphicsGetImageFromCurrentImageContext(); // 關(guān)閉圖形上下文 UIGraphicsEndImageContext(); //返回二維碼圖像 return qrImage; }
附加方法
/** 將CIImage轉(zhuǎn)換成UIImage 并放大(內(nèi)部轉(zhuǎn)換使用)*/ + (UIImage *)imageWithImageSize:(CGFloat)size withCIIImage:(CIImage *)ciiImage{ CGRect extent = CGRectIntegral(ciiImage.extent); CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent)); // 1.創(chuàng)建bitmap; size_t width = CGRectGetWidth(extent) * scale; size_t height = CGRectGetHeight(extent) * scale; CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray(); CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone); CIContext *context = [CIContext contextWithOptions:nil]; CGImageRef bitmapImage = [context createCGImage:ciiImage fromRect:extent]; CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone); CGContextScaleCTM(bitmapRef, scale, scale); CGContextDrawImage(bitmapRef, extent, bitmapImage); // 2.保存bitmap到圖片 CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef); CGContextRelease(bitmapRef); CGImageRelease(bitmapImage); return [UIImage imageWithCGImage:scaledImage]; }
感謝你能夠認真閱讀完這篇文章,希望小編分享的“iOS如何生成二維碼圖片”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。