[SwiftUI] IOS上的 QRcode 產生器

之後會把一些我常用的 Swift 5 的範例放過來 免得找到了又忘了
這是 Xcode 11 & Swift 5 & IOS 13 的環境的東西
因為主要是SwiftUI的改變  所以有個 SwiftUI 的標頭
找到整份完整的程式  一個簡單小範例

import SwiftUI
import CoreImage

struct ContentView: View {

    let qrCodeString = "BEGIN:VCARD \n" +
    "VERSION:2.1 \n" +
    "FN:John Peter \n" +
    "N:Peter;John \n" +
    "TITLE:Admin \n" +
    "TEL;CELL:+91 431 524 2345 \n" +
    "TEL;WORK;VOICE:+91 436 542 8374 \n" +
    "EMAIL;WORK;INTERNET:John@ommail.in \n" +
    "URL:www.facebook.com \n" +
    "URL: www.instagram.com \n" +
    "ADR;WORK:;;423 ofce sales Center;Newark;DE;3243;USA \n" +
    "ORG:xxx Private limited \n" +
    "END:VCARD"

    var body: some View {
        Image(uiImage: generateQRCode(from: qrCodeString)!)
    }
   
    func generateQRCode(from string: String) -> UIImage? {
   
        let data = string.data(using: String.Encoding.ascii)
        var uiImage: UIImage?
        if let filter = CIFilter(name: "CIQRCodeGenerator",
                                 parameters: ["inputMessage": data as any,
                                              "inputCorrectionLevel": "L"]) {
   
            if let outputImage = filter.outputImage,
                let cgImage = CIContext().createCGImage(outputImage,
                                                        from: outputImage.extent) {
                let size = CGSize(width: outputImage.extent.width * 3.0,
                                  height: outputImage.extent.height * 3.0)
                UIGraphicsBeginImageContext(size)
                if let context = UIGraphicsGetCurrentContext() {
                    context.interpolationQuality = .none
                    context.draw(cgImage,
                                 in: CGRect(origin: .zero,
                                            size: size))
                    uiImage = UIGraphicsGetImageFromCurrentImageContext()
                }
                UIGraphicsEndImageContext()
            }
        }
        return uiImage
    }
}


留言

這個網誌中的熱門文章

Ubuntu 64bit 32bit 的問題

[RDKM] Set up Env. in Windows10 WSL