iOS開發(fā)生成二維碼圖片(附中間帶有小圖標(biāo)二維碼)
生成二維碼圖片也是項(xiàng)目中常用到的,二維碼的掃描Git上有很多好用的,這里主要說下二維碼的生成
1.普通二維碼
1.1 方法
/** 生成二維碼 QRStering:字符串 imageFloat:二維碼圖片大小 */ + (UIImage *)createQRCodeWithString:(NSString *)QRStering withImgSize:(CGFloat)imageFloat;
1.2 方法實(shí)現(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.中間帶有小圖標(biāo)的二維碼
2.1 方法
/** 生成二維碼(中間有小圖片) QRStering:字符串 centerImage:二維碼中間的image對(duì)象 */ + (UIImage *)createImgQRCodeWithString:(NSString *)QRString centerImage:(UIImage *)centerImage;
2.2 方法實(shí)現(xiàn)
/** 生成二維碼(中間有小圖片) QRStering:所需字符串 centerImage:二維碼中間的image對(duì)象 */ + (UIImage *)createImgQRCodeWithString:(NSString *)QRString centerImage:(UIImage *)centerImage{ // 創(chuàng)建濾鏡對(duì)象 CIFilter *filter = [CIFilter filterWithName:@"XiaoGuiGe"]; // 恢復(fù)濾鏡的默認(rèn)屬性 [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)點(diǎn) [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)]; // 獲取當(dāng)前畫得的這張圖片 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]; }
總結(jié)
以上所述是小編給大家介紹的iOS開發(fā)生成二維碼圖片(附中間帶有小圖標(biāo)二維碼),希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
iOS自定義可展示、交互的scrollView滾動(dòng)條
這篇文章主要為大家詳細(xì)介紹了iOS自定義可展示、交互的scrollView滾動(dòng)條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04iOS App中UILabel的自定義及在Auto Layout中的使用
這篇文章主要介紹了iOS App中UILabel的自定義及在Auto Layout中的使用,示例代碼為傳統(tǒng)的Objective-C語(yǔ)言,需要的朋友可以參考下2016-03-03iOS開發(fā)中使用UIScrollView實(shí)現(xiàn)無(wú)限循環(huán)的圖片瀏覽器
這篇文章主要介紹了iOS開發(fā)中使用UIScrollView實(shí)現(xiàn)無(wú)限循環(huán)的圖片瀏覽器的方法,感興趣的小伙伴們可以參考一下2016-03-03iOS自定義UICollectionViewFlowLayout實(shí)現(xiàn)圖片瀏覽效果
這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實(shí)現(xiàn)圖片瀏覽效果的相關(guān)資料,需要的朋友可以參考下2016-03-03iOS 讀取URL圖片并存儲(chǔ)到本地的實(shí)例
下面小編就為大家?guī)硪黄猧OS 讀取URL圖片并存儲(chǔ)到本地的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12iOS開發(fā)中Date Picker和UITool Bar控件的使用簡(jiǎn)介
這篇文章主要介紹了iOS開發(fā)中Date Picker和UITool Bar控件的使用簡(jiǎn)介,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-01-01iOS實(shí)現(xiàn)左右拖動(dòng)抽屜效果
這篇文章主要介紹了iOS實(shí)現(xiàn)左右拖動(dòng)抽屜效果,理解ios平臺(tái)類似于QQ主頁(yè)面,利用觸摸事件滑動(dòng)touchesMoved實(shí)現(xiàn)的效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02