IOS 二維碼生成

#pragma mark -- 生成二維碼

+ (instancetype)creatImageWithQrCodeText:(NSString *)qrT WithCreatSize:(CGFloat)size{

? ? CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

? ? [filter setDefaults];

? ? NSData *filterData = [qrT dataUsingEncoding:NSUTF8StringEncoding];

? ? [filter setValue:filterData forKeyPath:@"inputMessage"];

? ? CIImage *outPutImage = [filter outputImage];

? ? return [self filterTheQrCode:outPutImage WithSize:size];

}

+ (UIImage *)filterTheQrCode:(CIImage *)ciImage WithSize:(CGFloat)size{

? ? CGRect extent = CGRectIntegral(ciImage.extent);//獲取圖片的規格

? ? CGFloat imageWidth = CGRectGetWidth(extent);

? ? CGFloat imageHeight = CGRectGetHeight(extent);

? ? CGFloat scale = MIN(size/imageWidth, size/imageHeight);//計算像素比例

? ? size_t width = imageWidth*scale;

? ? size_t height = imageHeight*scale;

? ? CGColorSpaceRef csr = CGColorSpaceCreateDeviceGray();//創建一個顏色空間

? ? CGContextRef bitMapRef = CGBitmapContextCreate(nil, width, height, 8, 0, csr, kCGImageAlphaNone);//繪制空間的規格

? ? CIContext *context = [CIContext contextWithOptions:nil];//獲取創建的顏色空間

? ? CGImageRef bitmapImage = [context createCGImage:ciImage fromRect:extent];//獲取要編輯的過濾圖

? ? CGContextSetInterpolationQuality(bitMapRef, kCGInterpolationNone);//連接顏色空間,CGInterpolationQuality表示插入的方式

? ? CGContextScaleCTM(bitMapRef, scale, scale);//更改過濾圖的坐標

? ? CGContextDrawImage(bitMapRef, extent, bitmapImage);//重新繪制過濾圖

? ? // 2.保存bitmap到圖片

? ? CGImageRef scaledImage = CGBitmapContextCreateImage(bitMapRef);//按照繪制空間的規格生成新圖片

? ? CGContextRelease(bitMapRef);

? ? CGImageRelease(bitmapImage);

? ? return [UIImage imageWithCGImage:scaledImage];

? }

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 二維碼生成步驟: 1.導入CoreImage框架 2.通過濾鏡CIFilter生成二維碼 示例代碼: 1.創建過濾...
    ssim閱讀 901評論 0 3
  • iOS7之后,可以使用原生的CIFilter創建二維碼。 一、生成二維碼 首先是二維碼的生成,使用CIFilter...
    _悟了個空閱讀 563評論 0 1
  • 自定義二維碼,就是指給系統二維碼添加一些圖片(前景或者背景圖片), 或者改變下顏色 自定義二維碼實質是通過Quar...
    翻這個墻閱讀 2,124評論 0 0
  • 在如今的開發中經常會遇到二維碼生成和二維碼讀取很是識別的需求網上也有一些封裝好的第三方的,但是樓主還是覺得自己寫一...
    進階的蚊子閱讀 2,120評論 0 2
  • 一、掃描 1、 ZBar ZBar在掃描的靈敏度上,和內存的使用上相對于ZXing上都是較優的,但是對于 “圓角二...
    空白Null閱讀 1,089評論 0 2