1、二维码的生成
- 参考资料:https://www.jianshu.com/p/a112ff14387f
let filter = CIFilter.init(name: "CIQRCodeGenerator")
filter?.setDefaults()
let data = qrUrl.data(using: .utf8)
filter?.setValue(data, forKeyPath: "inputMessage")
let outputImage = filter?.outputImage
if let outputImage = outputImage {
qrCodeView.image = createUIImageFromCIImage(image: outputImage, size: 100)
func createUIImageFromCIImage(image: CIImage, size: CGFloat) -> UIImage {
let extent = image.extent.integral
let scale = min(size / extent.width, size / extent.height)
let width = size_t(extent.width * scale)
let height = size_t(extent.height * scale)
let cs: CGColorSpace = CGColorSpaceCreateDeviceGray()
let bitmap = CGContext(data: nil, width: width, height: height, bitsPerComponent: 8, bytesPerRow: 0, space: cs, bitmapInfo: 1)
let context = CIContext.init()
let bitmapImage = context.createCGImage(image, from: extent)
if let bitmap = bitmap, let bitmapImage = bitmapImage {
bitmap.interpolationQuality = .none
bitmap.scaleBy(x: scale, y: scale)
bitmap.draw(bitmapImage, in: extent)
if let scaledImage = bitmap.makeImage() {
return UIImage.init(cgImage: scaledImage)
}
}
return UIImage()
}
2、二维码的识别
- 调用相机识别二维码
- 从相册中选取图片识别二维码
- 参考资料:
https://blog.csdn.net/leafgw/article/details/51096568
https://blog.csdn.net/qq_39097425/article/details/88985484
import Foundation
import UIKit
import AVFoundation
class ScanQrCodeViewController: UIViewController {
private var session: AVCaptureSession?
private let scanLine = UIImageView()
private let screenWidth =<