日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS-生成二维码图片【附中间带有小图标二维码】(QRCode)

發布時間:2023/12/9 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS-生成二维码图片【附中间带有小图标二维码】(QRCode) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

1.普通二維碼

?方法

/**生成二維碼QRStering:字符串imageFloat:二維碼圖片大小*/+ (UIImage *)createQRCodeWithString:(NSString *)QRStering withImgSize:(CGFloat)imageFloat;

?

?方法實現

/**生成二維碼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.中間帶有小圖標的二維碼

?方法

/**生成二維碼(中間有小圖片)QRStering:字符串centerImage:二維碼中間的image對象*/+ (UIImage *)createImgQRCodeWithString:(NSString *)QRString centerImage:(UIImage *)centerImage;

?

?方法實現

/**生成二維碼(中間有小圖片)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];}

?

轉載于:https://www.cnblogs.com/wangkejia/p/7634884.html

總結

以上是生活随笔為你收集整理的iOS-生成二维码图片【附中间带有小图标二维码】(QRCode)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。