https://github.com/EFPrefix/EFQRCode
A better way to operate QR Code in Swift, support iOS, macOS, watchOS and tvOS.
https://github.com/EFPrefix/EFQRCode
barcode barcode-generator barcode-scanner barcodes generator hacktoberfest ios macos qrcode qrcode-generator qrcode-reader qrcode-scanner qrcodes recognizer swift tvos watchos
Last synced: about 2 months ago
JSON representation
A better way to operate QR Code in Swift, support iOS, macOS, watchOS and tvOS.
- Host: GitHub
- URL: https://github.com/EFPrefix/EFQRCode
- Owner: EFPrefix
- License: mit
- Created: 2017-01-24T10:45:40.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2023-09-02T13:03:16.000Z (about 2 years ago)
- Last Synced: 2024-04-14T01:00:16.917Z (over 1 year ago)
- Topics: barcode, barcode-generator, barcode-scanner, barcodes, generator, hacktoberfest, ios, macos, qrcode, qrcode-generator, qrcode-reader, qrcode-scanner, qrcodes, recognizer, swift, tvos, watchos
- Language: Swift
- Homepage: https://efprefix.github.io/EFQRCode
- Size: 138 MB
- Stars: 4,536
- Watchers: 88
- Forks: 475
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-ios - EFQRCode - A better way to operate two-dimensional code in Swift. (Media / Media Processing)
- awesome-swift - EFQRCode - A better way to operate quick response code. (Libs / Hardware)
- awesome-swift - EFQRCode - A better way to operate quick response code. (Libs / Hardware)
- awesome-ios-star - EFQRCode - A better way to operate two-dimensional code in Swift. (Media / Media Processing)
- awesome-starts - EFPrefix/EFQRCode - A better way to operate QR Code in Swift, support iOS, macOS, watchOS and tvOS. (Swift)
- fucking-awesome-swift - EFQRCode - A better way to operate quick response code. (Libs / Hardware)
- StarryDivineSky - EFPrefix/EFQRCode
- awesome-swift - EFQRCode - A better way to operate QR Code in Swift, support iOS, macOS, watchOS and tvOS. ` 📝 20 days ago` (Hardware [🔝](#readme))
- awesome - EFQRCode - A better way to operate QR Code in Swift, support iOS, macOS, watchOS and tvOS. 【 [Priview](https://raw.githubusercontent.com/EFPrefix/EFQRCode/assets/QRCodeGIF6.gif) 】 (OOM-Leaks-Crash / Scan)
README

EFQRCode is a lightweight, pure-Swift library for generating stylized QRCode images with watermark or icon, and for recognizing QRCode from images, inspired by [qrcode](https://github.com/sylnsfar/qrcode) and [react-qrbtf](https://github.com/CPunisher/react-qrbtf). Based on `CoreGraphics`, `CoreImage`, and `ImageIO`, EFQRCode provides you a better way to handle QRCode in your app, no matter if it is on iOS, macOS, watchOS, tvOS, and/or visionOS. You can integrate EFQRCode through CocoaPods, Carthage, and/or Swift Package Manager.
## Examples
|||
:---------------------:|:---------------------:|:---------------------:|:---------------------:
|||
|||## Demo Projects
### App Store
You can click the `App Store` button below to download demo, support iOS, tvOS and watchOS:
You can also click the `Mac App Store` button below to download demo for macOS:
### Compile Demo Manually
To run the example project manually, clone the repo, demos are in the 'Examples' folder, then open `EFQRCode.xcworkspace` with Xcode and select the target you want, run.
Or you can run the following command in terminal:
```bash
git clone git@github.com:EFPrefix/EFQRCode.git; cd EFQRCode; open 'EFQRCode.xcworkspace'
```## Requirements
iOS 13.0+ / macOS 10.15+ / tvOS 13.0+ / watchOS 6.0+ / visionOS 1.0+
## Installation
### CocoaPods
EFQRCode is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:```ruby
pod 'EFQRCode', '~> 7.0.3'
```Then, run the following command:
```bash
$ pod install
```### Carthage
[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with [Homebrew](http://brew.sh/) using the following command:
```bash
$ brew update
$ brew install carthage
```To integrate EFQRCode into your Xcode project using Carthage, specify it in your `Cartfile`:
```ogdl
github "EFPrefix/EFQRCode" ~> 7.0.3
```Run `carthage update` to build the framework and drag the built `EFQRCode.framework` into your Xcode project.
### Swift Package Manager
The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the Swift compiler.
Once you have your Swift package set up, adding EFQRCode as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.
```swift
dependencies: [
.package(url: "https://github.com/EFPrefix/EFQRCode.git", .upToNextMinor(from: "7.0.3"))
]
```## Quick Start
#### 1. Import EFQRCode
Import EFQRCode module where you want to use it:
```swift
import EFQRCode
```#### 2. Recognition
A String Array is returned as there might be several QR Codes in a single `CGImage`:
```swift
if let testImage = UIImage(named: "test.png")?.cgImage {
let codes = EFQRCode.Recognizer(image: testImage).recognize()
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. Generation
##### 3.1 Create QR Code with static image
```swift
let generator = try? EFQRCode.Generator("https://github.com/EFPrefix/EFQRCode", style: .image(
params: .init(image: .init(image: .static(image: UIImage(named: "WWF")?.cgImage!), allowTransparent: true)))
)
if let image = try? generator?.toImage(width: 180).cgImage {
print("Create QRCode image success \(image)")
} else {
print("Create QRCode image failed!")
}
```Result:
##### 3.2 Generation from animated images
You can create a dynamic QR code by passing in a sequence of animated images. The usage method is as follows:
```swift
let generator = try? EFQRCode.Generator("https://github.com/EFPrefix/EFQRCode", style: .image(
params: .init(image: .init(image: .animated(images: cgImages, imageDelays: cgImageDelays))))
)
if let imageData = try? generator?.toGIFData(width: 512) {
print("Create QRCode image success \(imageData)")
} else {
print("Create QRCode image failed!")
}
```You can get more information from the demo, result will like this:
##### 3.3 Exportable types
- Static: NSImage, UIImage, PDF, PNG, JPEG
- Animated: APNG, GIF, SVG, MOV, MP4, M4V#### 4. Next
Learn more from [DeepWiki](https://deepwiki.com/EFPrefix/EFQRCode).
## Recommendations
1. Please select a high contrast foreground and background color combinations;
2. To improve the definition of QRCode images, increase `size`;
3. Oversized generation dimensions, excessive QR code content, and overly large imported media may lead to generation failures;
4. It is recommended to test the QRCode image before put it into use;
5. Any contributing and pull requests are warmly welcome;
6. Part of the pictures in the demo project and guide come from the internet. If there is any infringement of your legitimate rights and interests, please contact us to delete.## Contributors
## Backers
## Sponsors
- Thanks for the help from MacStadium's [Open Source Program](https://www.macstadium.com/opensource?from=EFQRCode).
- Thanks for the help from JetBrains's [Open Source Support Program](https://www.jetbrains.com/community/opensource/?from=EFQRCode).
## Contact
Twitter: [@EyreFree777](https://x.com/eyrefree777)
Weibo: [@EyreFree](https://weibo.com/eyrefree777)
Email: [eyrefree@eyrefree.org](mailto:eyrefree@eyrefree.org)## License
EFQRCode is available under the MIT license. See the LICENSE file for more info.