91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS如何生成二維碼圖片

發布時間:2021-08-04 12:37:19 來源:億速云 閱讀:167 作者:小新 欄目:移動開發

這篇文章主要介紹了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如何生成二維碼圖片”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ios
AI

汉寿县| 荣昌县| 嘉义市| 剑河县| 清苑县| 郑州市| 类乌齐县| 包头市| 沧源| 马边| 雷波县| 山阳县| 昂仁县| 郧西县| 扶沟县| 岳阳市| 天津市| 大渡口区| 肇东市| 海原县| 陆丰市| 石楼县| 平邑县| 佛教| 巫山县| 大荔县| 老河口市| 左云县| 宁化县| 江津市| 彰化县| 若尔盖县| 凯里市| 天水市| 崇文区| 宝山区| 峡江县| 新巴尔虎左旗| 双江| 玉门市| 仪陇县|