使用iOS-QR-Code-Encoder 生成二维码
一:所需类库
官网主页:https://github.com/moqod/iOS-QR-Code-Encoder
导入:QuartzCore.framework
二:使用流程
- 导入libqrencode文件夹里的所有文件
- 在使用的地方 导入
#import "qrencode.h"
- 添加如下生成代码:
//生成二维码:
- (UIImage *)qrImageForString:(NSString *)string imageSize:(CGFloat)size {
if (![string length]) {
return nil;
}
// generate QR
QRcode *code = QRcode_encodeString([string UTF8String], , QR_ECLEVEL_L, QR_MODE_8, );
if (!code) {
return nil;
}
if (code->width > size) {
printf("Image size is less than qr code size (%d)\n", code->width);
return nil;
}
// create context
CGBitmapInfo bitmapInfo = (CGBitmapInfo) kCGImageAlphaPremultipliedLast;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef ctx = CGBitmapContextCreate(, size, size, , size * , colorSpace, bitmapInfo);
CGAffineTransform translateTransform = CGAffineTransformMakeTranslation(, -size);
CGAffineTransform scaleTransform = CGAffineTransformMakeScale(, -);
CGContextConcatCTM(ctx, CGAffineTransformConcat(translateTransform, scaleTransform));
// draw QR on this context
[self drawQRCode:code context:ctx size:size];
// get image
CGImageRef qrCGImage = CGBitmapContextCreateImage(ctx);
UIImage * qrImage = [UIImage imageWithCGImage:qrCGImage];
// free memory
CGContextRelease(ctx);
CGImageRelease(qrCGImage);
CGColorSpaceRelease(colorSpace);
QRcode_free(code);
return qrImage;
}
- (void)drawQRCode:(QRcode *)code context:(CGContextRef)ctx size:(CGFloat)size {
int margin = ;
unsigned char *data = code->data;
int width = code->width;
int totalWidth = width + margin * ;
int imageSize = (int)floorf(size);
// @todo - review float->int stuff
int pixelSize = imageSize / totalWidth;
if (imageSize % totalWidth) {
pixelSize = imageSize / width;
margin = (imageSize - width * pixelSize) / ;
}
CGRect rectDraw = CGRectMake(0.0f, 0.0f, pixelSize, pixelSize);
// draw
CGContextSetFillColor(ctx, CGColorGetComponents([UIColor blackColor].CGColor));
for(int i = ; i < width; ++i) {
for(int j = ; j < width; ++j) {
if(*data & ) {
rectDraw.origin = CGPointMake(margin + j * pixelSize, margin + i * pixelSize);
CGContextAddRect(ctx, rectDraw);
}
++data;
}
}
CGContextFillPath(ctx);
}
三:调用生成二维:
//数据处理部分
CGFloat qrcodeLength = ;
UIImageView *imageV = [[UIImageView alloc]initWithFrame:CGRectMake((contentView.width-qrcodeLength)/, , qrcodeLength,qrcodeLength)];
//imageV.backgroundColor = [UIColor grayColor];
//添加二维码
imageV.image = [self qrImageForString:@"2013.11.11购物狂欢节" imageSize:qrcodeLength];
[contentView addSubview:imageV];

使用iOS-QR-Code-Encoder 生成二维码的更多相关文章
- 阐述二维码的原理以及使用google api和PHP QR Code来生成二维码
一.什么是二维码:二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的.在许多种类的二维条码中,常用的码 ...
- QR code 扩展生成二维码
include './phpqrcode/phpqrcode.php'; //引入QR库 QRcode::png("leo", 'qrcode.png', 'L', 10); ...
- IOS开发技巧快速生成二维码
随着移动互联网的发展,二维码应用非常普遍,各大商场,饭店,水果店 基本都有二维码的身影,那么ios中怎么生成二维码呢? 下面的的程序演示了快速生成二维码的方法: 在ios里面要生成二维码,需要借助一个 ...
- iOS - 原生的CIFilter生成二维码和条形码
使用CIFilter可以不引入任何第三方库,就可以生成想要的二维码和条形码,今天简单的介绍一下使用CIFilter生成二维码和条形码.系统CIFilter生成的二维码和条形码的大小有时并不能满足需求, ...
- iOS开发——高级技术&生成二维码
生成二维码 因为项目里需要新增个功能,该功能用到了二维码技术.于是我便查阅了资料,先学习了二维码的生成. 我们使用libqrencode库来生成二维码.下载地址http://download.cs ...
- iOS - 上架的APP 生成二维码下载
1.首先打开苹果App Store商店进入到里面,找到需要打开链接地址的应用程序,例如:百度. 2. 在App Store商店里面先点击一下应用程序图标,再按一下…分享按钮. 3. 接着选择分享APP ...
- (网页)jquery-qrcode.js生成二维码
基础用法 <div id="qrcode"></div> <script type="text/javascript"> n ...
- php生成二维码的几种方式[转]
二维码是二维条形码的一种,可以将网址.文字.照片等信息通过相应的编码算法编译成为一个方块形条码图案,手机用户可以通过摄像头和解码软件将相关信息重新解码并查看内容.PHP可以使用php QR Cod ...
- 利用JAVA生成二维码
本文章整理于慕课网的学习视频<JAVA生成二维码>,如果想看视频内容请移步慕课网. 维基百科上对于二维码的解释. 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图 ...
- 利用google api生成二维码名片例子
二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码.堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成:矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1” ...
随机推荐
- SSM整合所需jar包
MySql驱动包 mysql-connector-java-5.1.7-bin.jar MyBatis的核心包和依赖包 mybatis-3.2.7.jar(核心包)asm-3.3.1.jar(依赖包) ...
- 0822JDBC--Java连接数据库
JDBC定义: JDBC全称: Java DataBase Connectivity 独立于特定数据管理系统, 通用的sql数据库存取和操作的公共接口, 是一种面向接口编程 JDB ...
- python datetime处理时间(转)
Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块,它提供 的接口与C标准库time.h基本一致.相比于time模块,datetime模块的接 ...
- 【BZOJ 1216】 1216: [HNOI2003]操作系统 (模拟+优先队列)
1216: [HNOI2003]操作系统 Description 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自 ...
- [Codeforces #188] Tutorial
Link: Codeoforces #188 传送门 A: 先全转为正数,后面就全是指数级增长了 #include <bits/stdc++.h> using namespace std; ...
- BZOJ 2225 [Spoj 2371]Another Longest Increasing(CDQ分治)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2225 [题目大意] 给定N个数对(xi,yi),求最长上升子序列的长度. 上升序列定义 ...
- [CODE FESTIVAL 2016]Distance Pairs
题意:有一个未知的边权为$1$的图,给定所有点到$1$的最短路$a_i$和到$2$的最短路$b_i$,问是否存在这样的图,如果存在,问图中最少有多少条边 先考虑$a_i$,有$a_1=0,a_i\ne ...
- [UOJ55]紫荆花之恋
第一次打“真正的”动态点分 如果树是静态的,直接点分:用$d_x$代表$x$到分治中心的距离,限制条件即为$d_i+d_j\leq r_i+r_j$,考虑枚举$j$,那么我们要查询有多少满足$d_i- ...
- js 根据开始日期和结束日期显示倒计时
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con ...
- 8VC Venture Cup 2016 - Elimination Round A. Robot Sequence 暴力
A. Robot Sequence 题目连接: http://www.codeforces.com/contest/626/problem/A Description Calvin the robot ...