Compatible with all Platforms

EFQRCode 是一个轻量级的纯 Swift 库,用于生成带有水印或图标的风格化二维码图像,并从图像中识别二维码,灵感来源于 qrcode。基于 CoreGraphicsCoreImageImageIO,无论是在 iOS、macOS、watchOS 和/或 tvOS 上,EFQRCode 都为您提供了一种更好的方式来处理您应用中的二维码。您可以通过 CocoaPods、Carthage 和/或 Swift Package Manager 集成 EFQRCode。

中文介绍

示例

演示项目

App Store

您可以点击下面的 App Store 按钮下载演示,支持 iOS、tvOS 和 watchOS

您也可以点击下面的 Mac App Store 按钮下载 macOS 演示

手动编译演示

要手动运行示例项目,请克隆仓库,演示位于 'Examples' 文件夹中,记住在终端中运行命令 sh Startup.sh 以首先获取所有依赖项,然后使用 Xcode 打开 EFQRCode.xcworkspace 并选择您想要的目标,运行。

或者您可以在终端中运行以下命令

git clone git@github.com:EFPrefix/EFQRCode.git; cd EFQRCode; sh Startup.sh; open 'EFQRCode.xcworkspace'

要求

版本 需要
1.x Xcode 8.0+
Swift 3.0+
iOS 8.0+ / macOS 10.11+ / tvOS 9.0+
4.x Xcode 9.0+
Swift 4.0+
iOS 8.0+ / macOS 10.11+ / tvOS 9.0+ / watchOS 2.0+
5.x Xcode 11.1+
Swift 5.0+
iOS 8.0+ / macOS 10.11+ / tvOS 9.0+ / watchOS 2.0+
6.x Xcode 12.0+
latest Swift
iOS 9.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 2.0+

安装

CocoaPods

EFQRCode 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile

pod 'EFQRCode', '~> 6.2.2'

然后,运行以下命令

$ pod install

Carthage

重要提示:对于 Carthage 在 Xcode 12 中勉强工作,这个 workaround 是必要的。

Carthage 是一个去中心化的依赖管理器,它构建您的依赖项并为您提供二进制框架。

您可以使用 Homebrew 使用以下命令安装 Carthage

$ brew update
$ brew install carthage

要使用 Carthage 将 EFQRCode 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "EFPrefix/EFQRCode" ~> 6.2.2

运行 carthage update 以构建框架,并将构建的 EFQRCode.framework 拖到您的 Xcode 项目中。

Swift Package Manager

Swift Package Manager 是一个用于自动化 Swift 代码分发的工具,并已集成到 Swift 编译器中。

一旦您设置好 Swift 包,添加 EFQRCode 作为依赖项就像将其添加到您的 Package.swiftdependencies 值中一样容易。

dependencies: [
    .package(url: "https://github.com/EFPrefix/EFQRCode.git", .upToNextMinor(from: "6.2.2"))
]

快速开始

1. 导入 EFQRCode

在您想要使用它的地方导入 EFQRCode 模块

import EFQRCode

2. 识别

由于单个 CGImage 中可能存在多个二维码,因此返回一个字符串数组

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. 生成

创建二维码图像,基本用法

参数 描述
content 必需,二维码的内容
size 图像的宽度和高度
backgroundColor 二维码的背景颜色
foregroundColor 二维码的前景颜色
watermark 二维码的背景图像
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 二维码。

参数 描述
generator 必需,带有其他设置的 EFQRCodeGenerator 实例
data 必需,编码后的输入 GIF
delay 输出二维码 GIF 延迟,省略表示无更改
loopCount GIF 中循环的次数,省略表示无更改
if let qrCodeData = EFQRCode.generateGIF(
    using: generator, withWatermarkGIF: data
) {
    print("Create QRCode image success.")
} else {
    print("Create QRCode image failed!")
}

您可以从演示中获取更多信息,结果将如下所示

5. 下一步

用户指南 了解更多信息。

建议

  1. 请选择高对比度的前景和背景颜色组合;
  2. 为了提高二维码图像的清晰度,请增加 size,或使用 magnification(代替)放大;
  3. 放大倍数过高/尺寸过大/内容过长可能会导致失败;
  4. 建议在使用前测试二维码图像;
  5. 如有任何问题,您可以联系我,欢迎提交 IssuePull 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

贡献者

感谢所有已经为我们做出贡献的人,这个项目才得以存在。 [贡献]

赞助者

如果您认为这个项目对您有所帮助,您可以请我喝杯咖啡。如果您喜欢这个项目并愿意为它的进一步开发提供支持,您可以选择在 Open Collective 中成为 Backer。感谢我们所有的赞助者! 🙏 [成为赞助者]

赞助商

其他

演示项目和指南中的部分图片来自互联网。如果存在侵犯您的合法权益,请联系我们删除。

联系方式

邮箱: eyrefree@eyrefree.org

许可证

EFQRCode 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。