最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年10月08日 07:58:47   作者:小圭哥  
這篇文章主要介紹了iOS開發(fā)生成二維碼圖片(附中間帶有小圖標(biāo)二維碼)的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

生成二維碼圖片也是項(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版微信小程序跳一跳輔助

    ios版微信小程序跳一跳輔助

    這篇文章主要為大家詳細(xì)介紹了ios版微信小程序跳一跳輔助,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • iOS開發(fā)之使用Storyboard預(yù)覽UI在不同屏幕上的運(yùn)行效果

    iOS開發(fā)之使用Storyboard預(yù)覽UI在不同屏幕上的運(yùn)行效果

    使用Storyboard做開發(fā)效率非常高,為了防止在團(tuán)隊(duì)中發(fā)生沖突,采取的解決辦法是負(fù)責(zé)UI開發(fā)的同事最好每人維護(hù)一個(gè)Storyboard, 公用的組件使用輕量級(jí)的xib或者純代碼來實(shí)現(xiàn),下面小編就給大家介紹如何使用Storyboard預(yù)覽UI在不同屏幕上的運(yùn)行效果,需要的朋友可以參考下
    2015-08-08
  • iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問題的解決

    iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問題的解決

    iOS10的到來,帶來了條幅和鎖屏界面的重新設(shè)計(jì),美觀又好看,再加上抬腕喚醒功能,查看需要的信息確實(shí)更便捷了,還能快捷回復(fù)一些通知,十分輕松,但同樣有問題,下面這篇文章主要給大家介紹了關(guān)于iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問題的解決方法,需要的朋友可以參考下。
    2017-10-10
  • iOS Swift 值類型與引用類型使用區(qū)別基礎(chǔ)詳解

    iOS Swift 值類型與引用類型使用區(qū)別基礎(chǔ)詳解

    這篇文章主要為大家介紹了iOS Swift 值類型與引用類型使用區(qū)別基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • MAC系統(tǒng)下安裝FFmpeg的圖文教程

    MAC系統(tǒng)下安裝FFmpeg的圖文教程

    這篇文章主要給大家介紹了關(guān)于如何在MAC系統(tǒng)下安裝FFmpeg的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • iOS 10新的通知機(jī)制中添加圖片的方法詳解

    iOS 10新的通知機(jī)制中添加圖片的方法詳解

    這篇文章主要介紹了iOS 10新的通知機(jī)制中添加圖片的方法,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • 淺談iOS推送證書生成pem文件(詳細(xì)生成過程)

    淺談iOS推送證書生成pem文件(詳細(xì)生成過程)

    這篇文章主要介紹了淺談iOS推送證書生成pem文件(詳細(xì)生成過程),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • iOS 11更新后及iPhone X推出后工程中遇到的問題及適配方法

    iOS 11更新后及iPhone X推出后工程中遇到的問題及適配方法

    這篇文章主要介紹了iOS 11更新后及iPhone X推出后工程中遇到的問題及適配,需要的朋友可以參考下
    2017-10-10
  • 淺談iphone X的簡單適配問題(推薦)

    淺談iphone X的簡單適配問題(推薦)

    這篇文章主要介紹了淺談iphone X的簡單適配(推薦),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • iOS之?dāng)?shù)據(jù)解析之XML解析詳解

    iOS之?dāng)?shù)據(jù)解析之XML解析詳解

    本篇文章主要介紹了iOS之?dāng)?shù)據(jù)解析之XML解析詳解,XML解析常見的兩種方式:DOM解析和SAX解析,有興趣的可以了解一下。
    2016-12-12

最新評(píng)論

鞍山市| 酒泉市| 锡林浩特市| 福建省| 庄河市| 格尔木市| 清丰县| 明水县| 富顺县| 信丰县| 琼海市| 固安县| 曲松县| 宜兴市| 饶平县| 汽车| 邓州市| 肇庆市| 海晏县| 博野县| 黔东| 海伦市| 兴安盟| 大安市| 承德县| 沙湾县| 嘉峪关市| 永顺县| 凤庆县| 旅游| 海丰县| 焦作市| 胶南市| 徐州市| 昌吉市| 阿图什市| 济阳县| 孟连| 宣城市| 资阳市| 枞阳县|