国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS開發(fā)生成二維碼圖片(附中間帶有小圖標二維碼)

2020-07-26 02:40:13
字體:
來源:轉載
供稿:網(wǎng)友

生成二維碼圖片也是項目中常用到的,二維碼的掃描Git上有很多好用的,這里主要說下二維碼的生成

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"];  // 恢復濾鏡的默認屬性  [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.創(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開發(fā)生成二維碼圖片(附中間帶有小圖標二維碼),希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 米脂县| 偃师市| 汕尾市| 昌江| 长白| 沛县| 抚州市| 商都县| 左贡县| 塔河县| 丹巴县| 招远市| 垣曲县| 岳阳市| 兴宁市| 腾冲县| 陕西省| 祁阳县| 个旧市| 明星| 常州市| 萨嘎县| 招远市| 大理市| 南京市| 扶绥县| 溧阳市| 永平县| 鄂托克前旗| 凤城市| 大余县| 马尔康县| 疏勒县| 措勤县| 太仆寺旗| 封丘县| 长海县| 镇雄县| 吉木乃县| 思茅市| 安宁市|