啥也不说,直接上源码,拷过去就能用。生成二维码的工具类使用方法在ProduceQRCode.h里有示例说明

分别将下面的ProduceQRCode.h和ProduceQRCode.m对应的代码考到自己创建.h和.m文件中即可。

ProduceQRCode.h文件源码

//
// ProduceQRCode.h
// iOS生成二维码图片
//
// Created by 刘成利 on 15/10/13.
// Copyright © 2015年 LiuChengLi. All rights reserved.
// #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> /**
* 二维码的中间添加小图片或logo:
*
由于生成的二维码被扫描时有一定的容错能力,成利记得是容错30%。
所以二维码中间带有小图片或logo的方法就是在已经生成好的二维码中间的上面再添加一张小的方形图片。
后期美工可以自己添加或合成上去。
*
*/ /**
* 生成二维码图片工具类的使用--示例: - (void)viewDidLoad {
[super viewDidLoad]; // 需要转换成二维码字符串
NSString *showCode = @"http://blog.csdn.net/it_liuchengli"; // 转换后的二维码图片
UIImage *img = [[ProduceQRCode alloc]initWithQRCodeString:showCode width:200].QRCodeImage; // 显示上面转换后的二维码图片 UIImageView *imgView = [[UIImageView alloc]initWithImage:img];
imgView.center = self.view.center;
[self.view addSubview:imgView]; }
*/ @interface ProduceQRCode : NSObject // 生成的二维码图片在这里
@property (nonatomic, strong, readonly) UIImage *QRCodeImage; // 直接初始化调用此类alloc后的init如下的方法名
- (instancetype)initWithQRCodeString:(NSString *)string width:(CGFloat)width;
@end

ProduceQRCode.m文件中的代码

//
// ProduceQRCode.m
// iOS生成二维码图片
//
// Created by 刘成利 on 15/10/13.
// Copyright © 2015年 LiuChengLi. All rights reserved.
// #import "ProduceQRCode.h" @interface ProduceQRCode () @end @implementation ProduceQRCode - (instancetype)initWithQRCodeString:(NSString *)string width:(CGFloat)width{ self = [super init]; if (self)
{
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; [filter setDefaults]; NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:data
forKey:@"inputMessage"]; CIImage *outputImage = [filter outputImage]; CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:outputImage
fromRect:[outputImage extent]]; UIImage *image = [UIImage imageWithCGImage:cgImage
scale:0.1
orientation:UIImageOrientationUp]; // 不失真的放大
UIImage *resized = [self resizeImage:image
withQuality:kCGInterpolationNone
rate:5.0]; // 缩放到固定的宽度(高度与宽度一致)
_QRCodeImage = [self scaleWithFixedWidth:width image:resized]; CGImageRelease(cgImage);
}
return self; } - (UIImage *)scaleWithFixedWidth:(CGFloat)width image:(UIImage *)image
{
float newHeight = image.size.height * (width / image.size.width);
CGSize size = CGSizeMake(width, newHeight);
UIGraphicsBeginImageContextWithOptions(size, NO, ); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(context, 0.0, size.height);
CGContextScaleCTM(context, 1.0, -1.0); CGContextSetBlendMode(context, kCGBlendModeCopy);
CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, size.width, size.height), image.CGImage); UIImage *imageOut = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return imageOut;
} - (UIImage *)resizeImage:(UIImage *)image
withQuality:(CGInterpolationQuality)quality
rate:(CGFloat)rate
{
UIImage *resized = nil;
CGFloat width = image.size.width * rate;
CGFloat height = image.size.height * rate; UIGraphicsBeginImageContext(CGSizeMake(width, height));
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, quality);
[image drawInRect:CGRectMake(, , width, height)];
resized = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); return resized;
} @end

iOS开发——生成二维码——工具类的更多相关文章

  1. iOS开发——扫描二维码——工具类

    (代码已测试好,空闲时间更新……)

  2. java生成二维码工具类

    package com.runtime.extend.utils.CodeCreate; import com.google.zxing.*;import com.google.zxing.commo ...

  3. Java使用Zxing生成、解析二维码工具类

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法. 1.二维码的生成 (1).将Zxing-core.jar 包加入到classpath下. (2). ...

  4. 二维码工具类 - QrcodeUtils.java

    二维码工具类,提供多种生成二维码.解析二维码的方法,包括中间logo的二维码等方法. 源码如下:(点击下载 - QrcodeUtils.java.MatrixToImageWriterEx.java. ...

  5. java二维码工具类,中间带LOGO的,很强大

    jar包下载maven 配置: Xml代码 收藏代码 <dependency> <groupId>com.google.zxing</groupId> <ar ...

  6. java 生成微信的二维码 工具类

    package com.app.wii.util; import java.io.File;import java.io.FileInputStream;import java.io.FileOutp ...

  7. iOS开发-二维码

    二维码 从ios7开始集成了二维码的生成和读取功能 此前被广泛使用的zbarsdk目前不支持64位处理器 生成二维码的步骤: 倒入CoreImage框架 通过滤镜CIFilter生成二维码 二维码的内 ...

  8. iOS开发技术 - 二维码扫描、生成

    QRecLevel:QR_ECLEVEL_H // 二维码容错率,最高为30%(即QR_ECLEVEL_H),即LOGO有大                                       ...

  9. 【swift】ios中生成二维码

    ios开发中可以自己代码生成二维码,需要使用到一个框架 CoreImage CoreImage框架可以做滤镜,Gif动图,二维码等 先看效果图 下面直接贴上代码(OC也是下面一样的流程) func c ...

随机推荐

  1. linux c遍历文件夹 和文件查找的方法

    linux c遍历文件夹的方法比较简单,使用c来实现 #include <iostream> #include <stdio.h> #include <sys/types ...

  2. 【原创】Hadoop机架感知对性能调优的理解

    Hadoop作为大数据处理的典型平台,在海量数据处理过程中,其主要限制因素是节点之间的数据传输速率.因为集群的带宽有限,而有限的带宽资源却承担着大量的刚性带宽需求,例如Shuffle阶段的数据传输不可 ...

  3. H.264 Profile、Level、Encoder三张简图 (fps = AVCodecContext->time_base.den / AVCodecContext->time_base.num)

    H.264 Profiles Profiles are sets of capabilities. If your black box only supports the Baseline profi ...

  4. PC-经典之“运行里面的密密”

    msconfig.exe 你自己往里面输入这个字母就可以看到了,试试看,还有,我这里有一些可以在"运行"栏里输入的命令,一并给你: 以下为Windows操作系统的常用运行命令,执行 ...

  5. The Dangers of JavaScript’s Automatic Semicolon Insertion

    Although JavaScript is very powerful, the language’s fundamentals do not have a very steep learning ...

  6. UNITY 打包安卓APK

    1,安装JDK.这个直接下就行了. 2,安装android sdk相关.这个比较蛋疼,官网是被墙的.有些网站的包还是需要访问墙外下载的.关键是找对那个能用的包(对我来说就是不FQ). http://p ...

  7. struts2设置<s:select>默认选中项的方法

    struts2的select标签中,常用的有以下几个属性:(1)struts2中的select 标签中,必须设置的属性只有一个,即是list.(2)select标签的list中必须有值,不然会报错.如 ...

  8. windows 文件名太长无法删除的解决方法

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  9. asp.net C#母版页和内容页事件排版载入顺序生命周期

    asp.net C#母版页和内容页事件排版载入顺序生命周期 关于ASP页面Page_Load发生在事件之前而导致的问题已经喜闻乐见,对于问题的解释也非常全面.可是怎样解决这个问题则较少有人说明,我就再 ...

  10. uva 11270 - Tiling Dominoes(插头dp)

    题目链接:uva 11270 - Tiling Dominoes 题目大意:用1∗2木块将给出的n∗m大小的矩阵填满的方法总数. 解题思路:插头dp的裸题,dp[i][s]表示第i块位置.而且该位置相 ...