- (UIImage *)createQRCodeWithTargetString:(NSString *)targetString logoImage:(UIImage *)logoImage {
// 1.創(chuàng)建一個二維碼濾鏡實例
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[filter setDefaults];
// 2.給濾鏡添加數據
NSString *targetStr = targetString;
NSData *targetData = [targetStr dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
[filter setValue:targetData forKey:@"inputMessage"];
// 3.生成二維碼
CIImage *image = [filter outputImage];
// 4.高清處理: size 要大于等于視圖顯示的尺寸
UIImage *img = [self createNonInterpolatedUIImageFromCIImage:image size:[UIScreen mainScreen].bounds.size.width];
//5.嵌入LOGO
//5.1開啟圖形上下文
UIGraphicsBeginImageContext(img.size);
//5.2將二維碼的LOGO畫入
[img drawInRect:CGRectMake(0, 0, img.size.width, img.size.height)];
UIImage *centerImg = logoImage;
CGFloat centerW=img.size.width*0.25;
CGFloat centerH=centerW;
CGFloat centerX=(img.size.width-centerW)*0.5;
CGFloat centerY=(img.size.height -centerH)*0.5;
[centerImg drawInRect:CGRectMake(centerX, centerY, centerW, centerH)];
//5.3獲取繪制好的圖片
UIImage *finalImg=UIGraphicsGetImageFromCurrentImageContext();
//5.4關閉圖像上下文
UIGraphicsEndImageContext();
//6.生成最終二維碼
return finalImg;
}
- (UIImage *)createNonInterpolatedUIImageFromCIImage:(CIImage *)image size:(CGFloat)size {
CGRect extent = CGRectIntegral(image.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:image 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];
}
iOS-生成二維碼
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
- 文/潘曉璐 我一進店門泵琳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摄职,“玉大人,你說我怎么就攤上這事获列」仁校” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵击孩,是天一觀的道長迫悠。 經常有香客問我,道長巩梢,這世上最難降的妖魔是什么创泄? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮括蝠,結果婚禮上鞠抑,老公的妹妹穿的比我還像新娘。我一直安慰自己忌警,他們只是感情好搁拙,可當我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般箕速。 火紅的嫁衣襯著肌膚如雪酪碘。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼扶关,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了数冬?” 一聲冷哼從身側響起节槐,我...
- 正文 年R本政府宣布馏谨,位于F島的核電站别渔,受9級特大地震影響,放射性物質發(fā)生泄漏惧互。R本人自食惡果不足惜哎媚,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望壹哺。 院中可真熱鬧抄伍,春花似錦、人聲如沸管宵。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岗喉,卻和暖如春秋度,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钱床。 一陣腳步聲響...