EFQRCode 是一个轻量级的纯 Swift 库,用于生成带水印或图标的艺术 QR 图像,以及从图像中识别 QR 图像,灵感来自 qrcode。基于 CoreGraphics
、CoreImage
和 ImageIO
,EFQRCode 为您提供了更好的处理 QR 图像的方式,无论您是在 iOS、macOS、watchOS 和/或 tvOS 上。您可以通过 CocoaPods、Carthage 和/或 Swift Package Manager 集成 EFQRCode。
示例
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
演示项目
TestFlight
您可以点击下面的 TestFlight
按钮下载带有 TestFlight 的演示
App Store
您可以点击下面的 App Store
按钮下载演示,支持 iOS、tvOS 和 watchOS

您也可以点击下方的 Mac App Store
按钮来下载 macOS 的演示程序。

手动编译演示
要手动运行示例项目,请克隆仓库,演示文件位于“Examples”文件夹中。请记住,首先在终端中运行命令 sh Startup.sh
来获取所有依赖项,然后使用 Xcode 打开 EFQRCode.xcworkspace
,选择你想要的目标,然后运行。
或者你可以在终端中运行以下命令
git clone [email protected]:EFPrefix/EFQRCode.git; cd EFQRCode; sh Startup.sh; open 'EFQRCode.xcworkspace'
要求
安装
CocoaPods
EFQRCode 通过 CocoaPods 提供。要安装它,只需将以下行添加到你的 Podfile
pod 'EFQRCode', '~> 6.2.1'
然后,运行以下命令
$ pod install
Carthage
重要:此 解决方案 对于 Carthage 在 Xcode 12 中部分工作来说是必要的。
Carthage 是一个去中心化的依赖管理器,它构建你的依赖项并提供二进制框架。
你可以使用以下命令通过 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 EFQRCode 集成到你的 Xcode 项目中,请在 Cartfile
中指定它
github "EFPrefix/EFQRCode" ~> 6.2.1
运行 carthage update
命令来构建框架,并将构建好的 EFQRCode.framework
拖入您的 Xcode 项目中。
Swift 包管理器
Swift 包管理器是一款用于自动化 Swift 代码分发的工具,且已集成到 Swift 编译器中。
一旦您已设置好 Swift 包,将 EFQRCode 添加为依赖项与将其添加到 Package.swift
文件的 dependencies
值一样简单。
dependencies: [
.package(url: "https://github.com/EFPrefix/EFQRCode.git", .upToNextMinor(from: "6.2.1"))
]
快速入门
1. 引入 EFQRCode
在您想使用 EFQRCode 的模块中引入该模块
import EFQRCode
2. 识别
返回一个字符串数组,因为单张 CGImage
中可能存在多个 QR 码。
if let testImage = UIImage(named: "test.png")?.cgImage {
let codes = EFQRCode.recognize(testImage)
if !codes.isEmpty {
print("There are \(codes.count) codes")
for (index, code) in codes.enumerated() {
print("The content of QR Code \(index) is \(code).")
}
} else {
print("There is no QR Codes in testImage.")
}
}
3. 生成
创建 QR 码图像,基本用法
参数 | 描述 |
---|---|
content |
必需,QR 码的内容 |
size |
图像的宽度和高度 |
backgroundColor |
QR 码的背景颜色 |
foregroundColor |
QR 码的前景颜色 |
watermark |
QR 码的背景图像 |
if let image = EFQRCode.generate(
for: "https://github.com/EFPrefix/EFQRCode",
watermark: UIImage(named: "WWF")?.cgImage
) {
print("Create QRCode image success \(image)")
} else {
print("Create QRCode image failed!")
}
结果
4. 从 GIF 生成
使用 EFQRCode.generateGIF
创建 GIF 二维码。
参数 | 描述 |
---|---|
生成器 |
必填,一个带有其他设置的 EFQRCodeGenerator 实例 |
数据 |
必填,编码后的输入 GIF |
延迟 |
输出 QRCode GIF 的延迟,发射表示无变化 |
循环次数 |
在 GIF 中循环的次数,发射表示无变化 |
if let qrCodeData = EFQRCode.generateGIF(
using: generator, withWatermarkGIF: data
) {
print("Create QRCode image success.")
} else {
print("Create QRCode image failed!")
}
您可以从示例中获取更多信息,结果将如下所示
5. 下一步
从 用户指南 中了解更多。
建议
- 请选择高对比度的前景和背景颜色组合;
- 为了提高 QRCode 图像的清晰度,增加
size
,或使用magnification
放大(或者也可以选择放大); - 放大过度/大小过大/内容过长可能会导致失败;
- 建议在使用前测试 QRCode 图像;
- 如果有任何问题,请与我联系,无论是
Issue
还是Pull request
都欢迎。
PS 的 PS:如果您觉得这个工具对您有用,请点击 Star
按钮,谢谢,QAQ...
其他平台/语言
平台/语言 | 链接 |
---|---|
Objective-C | https://github.com/z624821876/YSQRCode |
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 |
贡献者
本项目的存在要感谢所有贡献者。[贡献力量]
备注:我们使用QRCodeSwift在watchOS生成二维码,感谢ApolloZhu。
捐赠
如果你觉得这个项目给你带来了帮助,你可以买我一杯咖啡。如果你喜欢这个项目,并愿意为其进一步发展提供支持,你可以在Open Collective中选择成为支持者
或赞助商
。
支持者
感谢所有支持者!
赞助商
通过成为赞助商来支持此项目。您的标志将在这里显示,并带有链接到您的网站。[成为赞助商]
感谢您的支持,
感谢
- 感谢JetBrains的开源支持计划的帮助。
使用 EFQRCode 的应用
|
|
|
|
|
|
|
|
|
|
|
|
其他
示例项目和指南中的一些图片来自互联网。如有侵犯您的合法权益,请联系我们删除。
联系
Email: [email protected]
许可
EFQRCode 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。