【图】微信群二维码如何生成?微信群二维码生成方法

360图片
360精选
iOS(OC)用系统方法生成二维码,本文章只是生成 导入头文件 #import CoreImage/CoreImage.h //创建名为CIQRCodeGenerator的CIFilter CIFilter *filter = [CIFilter filterWithName:@CIQRCodeGenerator]; //将filter所有属性设置为默认值 [filter setDefaults]; //将所需尽心转为UTF8的数据,并设置给filter NSString * str = self.urlTextF.text.length0?self.urlTextF.text:@这是一个测试二维码; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:data forKey:@inputMessage]; //设置二维码的纠错水平,越高纠错水平越高,可以污损的范围越大 /* * L: 7% * M: 15% * Q: 25% * H: 30% */ [filter setValue:@H forKey:@inputCorrectionLevel]; //拿到二维码图片,此时的图片不是很清晰,需要二次加工 CIImage *outPutImage = [filter outputImage]; // UIImage * codeImg = [self sencond_getHDImgWithCIImage:outPutImage // size:CGSizeMake(130, 130) // pointColor:nil // backColor:nil]; UIImage * codeImg = [self getHDImgWithCIImage:outPutImage size:CGSizeMake(130, 130) waterImg:[UIImage imageNamed:@login_logo] waterSize:CGSizeMake(35, 35)]; [self.codeImgV setImage:codeImg]; 复制代码 这个时候已经生成了二维码,然后需要对其进行大小,颜色,log的编辑 /** 调整二维码清晰度 @param img二维码图片 @param size二维码大小 @param pointColor二维码的颜色(默认黑色) @param backgroundColor二维码的背景(默认白色) @return 生成后的二维码 */ - (UIImage *)sencond_getHDImgWithCIImage:(CIImage *)img size:(CGSize)size pointColor:(UIColor *)pointColor backColor:(UIColor *)backgroundColor{ //设置二维码的颜色 if (pointColor == nil) { pointColor = [UIColor blackColor]; } //设置背景颜色 if (backgroundColor == nil) { backgroundColor = [UIColor whiteColor]; } CIFilter *colorFilter = [CIFilter filterWithName:@CIFalseColor keysAndValues: @inputImage, img, @inputColor0, [CIColor colorWithCGColor:pointColor.CGColor], @inputColor1, [CIColor colorWithCGColor:backgroundColor.CGColor], nil]; CIImage *qrImage = colorFilter.outputImage; //绘制 CGImageRef cgImage = [[CIContext contextWithOptions:nil] createCGImage:qrImage fromRect:qrImage.extent]; UIGraphicsBeginImageContext(size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetInterpolationQuality(context, kCGInterpolationNone); CGContextScaleCTM(context, 1.0, -1.0); CGContextDrawImage(context, CGContextGetClipBoundingBox(context), cgImage); UIImage *codeImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); CGImageRelease(cgImage); return codeImage; } 复制代码 /** 调整二维码清晰度,添加水印图片 @param img模糊的二维码图片 @param size需要的二维码宽高 @param waterImg log图片 @param waterSize log图片的大小 @return 添加log后的二维码 */ - (UIImage *)getHDImgWithCIImage:(CIImage *)img size:(CGSize)size waterImg:(UIImage *)waterImg waterSize:(CGSize)waterSize { CGRect extent = CGRectIntegral(img.extent); CGFloat scale = MIN(size.width/CGRectGetWidth(extent), size.height/CGRectGetHeight(extent)); //1.创建bitmap; size_t width = CGRectGetWidth(extent) * scale; size_t height = CGRectGetHeight(extent) * scale; //创建一个DeviceGray颜色空间 CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray(); //width:图片宽度像素 //height:图片高度像素 //bitsPerComponent:每个颜色的比特值,例如在rgba-32模式下为8 //bitmapInfo:指定的位图应该包含一个alpha通道。 CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone); CIContext *context = [CIContext contextWithOptions:nil]; //创建CoreGraphics image CGImageRef bitmapImage = [context createCGImage:img fromRect:extent]; CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone); CGContextScaleCTM(bitmapRef, scale, scale); CGContextDrawImage(bitmapRef, extent, bitmapImage); //2.保存bitmap到图片 CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef); CGContextRelease(bitmapRef); CGImageRelease(bitmapImage); //清晰的二维码图片 UIImage *outputImage = [UIImage imageWithCGImage:scaledImage]; //给二维码加 logo图 UIGraphicsBeginImageContextWithOptions(outputImage.size, NO, [[UIScreen mainScreen] scale]); [outputImage drawInRect:CGRectMake(0, 0, size.width, size.height)]; //水印图片 //把水印图片画到生成的二维码图片上,注意尺寸不要太大(根据上面生成二维码设置的纠错程度设置),否则有可能造成扫不出来 [waterImg drawInRect:CGRectMake((size.width-waterSize.width)/2.0, (size.height-waterSize.height)/2.0, waterSize.width, waterSize.height)]; UIImage *newPic = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newPic; } 复制代码
查看更多
没有更多结果了~