用 Swift 写了一个二维码生成库 - EFQRCode,支持添加各种奇怪的样式,求一波支持~

开源项目EyreFree • 于 2017-08-25 16:39:36 +0800 • 384 阅读

EFQRCode 是一个轻量级的、用来生成和识别二维码的纯 Swift 库,可根据输入的水印图和图标产生艺术二维码,基于 CoreImage 进行开发。受 qrcode 启发。EFQRCode 为你提供了一种更好的在你的 App 中操作二维码的方式,1.2.7 及后续版本支持通过 Objective-C 调用。

English Introduction

概述

示例

AppStore

你可以点击下方的 AppStore 按钮从应用商店下载示例程序,支持 iOS 和 tvOS。

手动

  1. 利用 git clone 命令下载本仓库, Examples 目录包含了所有的示例程序;
  2. 用 XCode 打开对应项目编译即可。

或执行以下命令:

bash git clone git@github.com:EyreFree/EFQRCode.git; cd EFQRCode/Examples/iOS; open 'iOS Example.xcodeproj'

环境

  • XCode 8.0+
  • Swift 3.0+
  • iOS 8.0+ / macOS 10.11+ / tvOS 9.0+

安装

CocoaPods

EFQRCode 可以通过 CocoaPods 进行获取。只需要在你的 Podfile 中添加如下代码就能实现引入:

ruby pod "EFQRCode", '~> 1.2.7'

然后,执行如下命令即可:

bash $ pod install

Carthage

Carthage 是一个去中心化的依赖管理器,它为我们构建依赖并通过提供二进制 Frameworks 的方式供我们使用。

你可以通过 Homebrew 使用如下命令来安装 Carthage:

bash $ brew update $ brew install carthage

通过在你的 Cartfile 添加如下语句可以将 EFQRCode 引入你的项目:

ogdl github "EyreFree/EFQRCode" ~> 1.2.7

接下来执行 carthage update 命令生成 Framework 并且将生成的 EFQRCode.framework 拖入工程即可。

Swift Package Manager

Swift Package Manager 是一个集成在 swift 编译器中的用来进行 Swift 代码自动化发布的工具。

如果你已经建立了你的 Swift 包,将 EFQRCode 加入依赖是十分容易的,只需要将其添加到你的 Package.swift 文件的 dependencies 项中即可:

swift dependencies: [ .Package(url: "https://github.com/EyreFree/EFQRCode.git", Version(1, 2, 7)) ]

快速使用

1. 导入 EFQRCode

在你需要使用的地方添加如下代码引入 EFQRCode 模块:

swift import EFQRCode

2. 二维码识别

获取图片中所包含的二维码,同一张图片中可能包含多个二维码,所以返回值是一个字符串数组:

swift if let testImage = UIImage(named: "test.png")?.toCGImage() { if let tryCodes = EFQRCode.recognize(image: testImage) { if tryCodes.count > 0 { print("There are \(tryCodes.count) codes in testImage.") for (index, code) in tryCodes.enumerated() { print("The content of \(index) QR Code is: \(code).") } } else { print("There is no QR Codes in testImage.") } } else { print("Recognize failed, check your input image!") } }

3. 二维码生成

根据所输入参数创建各种艺术二维码图片,快速使用方式如下:

swift // content: Content of QR Code // size (Optional): Width and height of image // backgroundColor (Optional): Background color of QRCode // foregroundColor (Optional): Foreground color of QRCode // watermark (Optional): Background image of QRCode

swift if let tryImage = EFQRCode.generate( content: "https://github.com/EyreFree/EFQRCode", watermark: UIImage(named: "WWF")?.toCGImage() ) { print("Create QRCode image success: \(tryImage)") } else { print("Create QRCode image failed!") }

结果:

4. 接下来

查看 用户手册 了解更多细节。

待办

  • [ ] 支持 GIF 动图
  • [ ] 支持更多样式

备注

  1. 请选用对比度较高的前景色和背景色组合;
  2. 想要提高生成二维码的清晰度可以选择使用 magnificatio 替代 size,或适当提高它们的数值;
  3. 放大倍数过高/边长过大/二维码内容过多可能会导致生成失败;
  4. 建议对生成的二维码进行测试后投入使用,例如微信能够扫描成功并不代表支付宝也能成功扫描,请务必根据您的具体业务需要做有针对性的测试;
  5. 若有任何问题,期待得到您的反馈,IssuePull request 都是受欢迎的。

备注的备注:好用的话可以给个星星,蟹蟹,QAQ...

其它平台/语言

平台/语言 链接
Java https://github.com/SumiMakito/AwesomeQRCode
JavaScript https://github.com/SumiMakito/Awesome-qr.js
Kotlin https://github.com/SumiMakito/AwesomeQRCode-Kotlin
Python https://github.com/sylnsfar/qrcode

贡献者

这个项目的存在多亏了所有贡献的人。 [Contribute]

支持者

感谢所有的支持者! 🙏 [Become a backer]

赞助商

通过成为赞助商来支持这个项目,您的徽标将显示在这里并且链接到您的网站。 [Become a sponsor]

联系

Email: eyrefree@eyrefree.org
Weibo: @EyreFree
Twitter: @EyreFree777

协议

EFQRCode 基于 MIT 协议进行分发和使用,更多信息参见协议文件。

回复: 0
暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,见 Emoji cheat sheet
  • @name 会链接到用户页面,并会通知他
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
Ctrl+Enter