iOS开发——生成二维码——工具类
啥也不说,直接上源码,拷过去就能用。生成二维码的工具类使用方法在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开发——生成二维码——工具类的更多相关文章
- iOS开发——扫描二维码——工具类
(代码已测试好,空闲时间更新……)
- java生成二维码工具类
package com.runtime.extend.utils.CodeCreate; import com.google.zxing.*;import com.google.zxing.commo ...
- Java使用Zxing生成、解析二维码工具类
Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法. 1.二维码的生成 (1).将Zxing-core.jar 包加入到classpath下. (2). ...
- 二维码工具类 - QrcodeUtils.java
二维码工具类,提供多种生成二维码.解析二维码的方法,包括中间logo的二维码等方法. 源码如下:(点击下载 - QrcodeUtils.java.MatrixToImageWriterEx.java. ...
- java二维码工具类,中间带LOGO的,很强大
jar包下载maven 配置: Xml代码 收藏代码 <dependency> <groupId>com.google.zxing</groupId> <ar ...
- java 生成微信的二维码 工具类
package com.app.wii.util; import java.io.File;import java.io.FileInputStream;import java.io.FileOutp ...
- iOS开发-二维码
二维码 从ios7开始集成了二维码的生成和读取功能 此前被广泛使用的zbarsdk目前不支持64位处理器 生成二维码的步骤: 倒入CoreImage框架 通过滤镜CIFilter生成二维码 二维码的内 ...
- iOS开发技术 - 二维码扫描、生成
QRecLevel:QR_ECLEVEL_H // 二维码容错率,最高为30%(即QR_ECLEVEL_H),即LOGO有大 ...
- 【swift】ios中生成二维码
ios开发中可以自己代码生成二维码,需要使用到一个框架 CoreImage CoreImage框架可以做滤镜,Gif动图,二维码等 先看效果图 下面直接贴上代码(OC也是下面一样的流程) func c ...
随机推荐
- 集群搭建:主机宽带拨号上网,虚拟机使用桥接模式,该如何ping通外网
首先介绍一下看这篇文章需要的基础.需要了解虚拟机的 虚拟机的三种网络模式,有Linux基础知识,这些都是前提.首先介绍一下我的环境:主机:win7虚拟机:VMware Workstation 10虚拟 ...
- 局域网yum服务器创建
yum createrepo createrepo dir 配置httpd发布yum-repo; 在客户端添加yum.rep配置文件;
- CodeForces 540E - Infinite Inversions(离散化+树状数组)
花了近5个小时,改的乱七八糟,终于A了. 一个无限数列,1,2,3,4,...,n....,给n个数对<i,j>把数列的i,j两个元素做交换.求交换后数列的逆序对数. 很容易想到离散化+树 ...
- CodeForces 352D. Jeff and Furik
题意:给n个数,第一个人选取相邻两个递降的数交换顺序,第二个人一半的概率选取相邻两个递降的数交换顺序,一半的概率选取相邻两个递增的数交换顺序.两个人轮流操作,求整个数列变成递增数列所需交换次数的期望. ...
- 几年的Git使用技巧总结
用git有一年了,下面是我这一年来的git使用总结,覆盖了日常使用中绝大多数的场景.嗯,至少是够用一年了,整理出来分享给大家,不明白的地方可以回复交流. 创建和使用git ssh key 首先设置gi ...
- 对比iOS网络组件:AFNetworking VS ASIHTTPRequest(转载)
在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题.一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性.这些组件把复杂的网络底层操作封装成友好的类和方法, ...
- oc学习之路----代理模式2-使用步骤
之前已经写过一个个人关于代理模式的一些看法,现在就来总结一下使用代理模式的步骤吧. 1.先搞清楚谁是谁的代理(delegate) ● 2.定义代理协议,协议名称的命名规范:控件类名 + Delegat ...
- org.openqa.selenium.remote.SessionNotFoundException: The FirefoxDriver cannot be used after quit() was called.
该问题已经困扰了我很多天 问题终于解决了,全局变量导致的,碰到这种问题很难再自己本身的机器上发现错误,所以,应该看一下自己写的方法是否涉及到了全局变量出现不一致的情况,让其统一即可.
- 错误: 找不到或无法加载主类 / Class not found
Java Resources文件上有红色感叹号存在 说明引入jar包存在错误,把引用错误的jar包去掉即可. 右键项目,Properties,Java Build Path,选中jar包remove, ...
- linux环境下tcpdump源代码分析
Linux 环境下tcpdump 源代码分析 韩大卫@吉林师范大学 tcpdump.c 是tcpdump 工具的main.c, 本文旨对tcpdump的框架有简单了解,只展示linux平台使用的一部分 ...