前言
背景: initQRCodeForInputByteSize cannot find proper rs block info (input data too big?)
之前的同事 误认为二维码是app侧自己生成,直接将base64字符串作为二维码的内容去生成,一张二维码容不下这么长的内容。就生成失败了。其实只要直接将base64字符串转图片。
案例:iOS富文本编辑器(基于WKWebview实现,Editor使用WKWebview加载一个本地editor.html文件) https://download.csdn.net/download/u011018979/85675638
base64字符串和图片进行互转
1.1 将base64字符串转为图片
代码语言:javascript复制/**
将base64字符串转为图片
*/
(UIImage *)stringToImage:(NSString *)str {
NSData * imageData =[[NSData alloc] initWithBase64EncodedString:str options:NSDataBase64DecodingIgnoreUnknownCharacters];
UIImage *photo = [UIImage imageWithData:imageData ];
return photo;
}
- 生成一张普通的二维码
(UIImage *)generateWithDefaultQRCodeData:(NSString *)data imageViewWidth:(CGFloat)imageViewWidth {
// 1、创建滤镜对象
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
// 恢复滤镜的默认属性
[filter setDefaults];
// 2、设置数据
NSString *info = data;
// 将字符串转换成
NSData *infoData = [info dataUsingEncoding:NSUTF8StringEncoding];
// 通过KVC设置滤镜inputMessage数据
[filter setValue:infoData forKeyPath:@"inputMessage"];
// 3、获得滤镜输出的图像
CIImage *outputImage = [filter outputImage];
return [self createNonInterpolatedUIImageFormCIImage:outputImage withSize:imageViewWidth];
}
1.2 UIImage转base64
代码语言:javascript复制 NSData *scaledImageData = UIImageJPEGRepresentation(scaledImage, 0.8);
//Encode the image data as a base64 string
NSString *imageBase64String = [scaledImageData base64EncodedStringWithOptions:0];
案例:iOS富文本编辑器(基于WKWebview实现,Editor使用WKWebview加载一个本地editor.html文件) https://download.csdn.net/download/u011018979/85675638