您好,登錄后才能下訂單哦!
這篇文章主要介紹了iOS如何生成二維碼圖片,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
1.普通二維碼
1.1 方法
/** 生成二維碼 QRStering:字符串 imageFloat:二維碼圖片大小 */ + (UIImage *)createQRCodeWithString:(NSString *)QRStering withImgSize:(CGFloat)imageFloat;
1.2 方法實現
/** 生成二維碼 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 方法實現
/** 生成二維碼(中間有小圖片) QRStering:所需字符串 centerImage:二維碼中間的image對象 */ + (UIImage *)createImgQRCodeWithString:(NSString *)QRString centerImage:(UIImage *)centerImage{ // 創建濾鏡對象 CIFilter *filter = [CIFilter filterWithName:@"XiaoGuiGe"]; // 恢復濾鏡的默認屬性 [filter setDefaults]; // 將字符串轉換成 NSdata NSData *dataString = [QRString dataUsingEncoding:NSUTF8StringEncoding]; // 設置過濾器的輸入值, KVC賦值 [filter setValue:dataString forKey:@"inputMessage"]; // 獲得濾鏡輸出的圖像 CIImage *outImage = [filter outputImage]; // 圖片小于(27,27),我們需要放大 outImage = [outImage imageByApplyingTransform:CGAffineTransformMakeScale(20, 20)]; // 將CIImage類型轉成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(); // 關閉圖形上下文 UIGraphicsEndImageContext(); //返回二維碼圖像 return qrImage; }
附加方法
/** 將CIImage轉換成UIImage 并放大(內部轉換使用)*/ + (UIImage *)imageWithImageSize:(CGFloat)size withCIIImage:(CIImage *)ciiImage{ CGRect extent = CGRectIntegral(ciiImage.extent); CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent)); // 1.創建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如何生成二維碼圖片”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。