ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • QR Code - 만들기편!
    오늘의 Swift 상식 2021. 9. 15. 19:14
    728x90
    반응형

     

     

     

     

     

     

    안녕하세요. iOS 개발자 에이든입니다!👦🏻

     

     

     

    망할 ㅋㄹㄴ때문에 너무 힘든 요즘

    앱에서 특히나 많이 쓰는 기능이 있는데요~

    바로 QR코드!

    갑자기 떠올라서 이렇게 글을 쓰게 되었습니다!

     

    1편은 만들기, 2편은 Scan 하기 이렇게 글을 써보려고 합니다.

    제발 ㅋㄹㄴ 멈춰!

     


     

     

     


    QR 코드 만들기

    만드는 법은 생각보다 간단합니다! CoreImage 안에 있는 CIFilterqrCodeGenerator()라는 Method를 가지고 있어서 이후의 작업은 이미지 크기만 조정하는 작업을 거치면 된답니다. 자세한 건 아래의 코드로 설명드리도록 할게요!

     

    import SwiftUI
    import CoreImage.CIFilterBuiltins
    
    struct ContentView: View {
        
        let context = CIContext()
        // CIFilter는 말그대로 이미지에 Filter를 씌우는 녀석이라고 보시면 됩니다. 우리는 QRCode 이미지를 만들거니깐 qrCodeGenerator() Method를 사용할게요!
        let filter = CIFilter.qrCodeGenerator()
        
        var body: some View {
            Image(uiImage: generateQRCode(from: "https://aiden-ios.tistory.com"))
                .resizable()
                .frame(width: UIScreen.main.bounds.width - 200, height: UIScreen.main.bounds.width - 200, alignment: .center)
                .background(Color.black)
        }
    }
    
    extension ContentView {
    
        func generateQRCode(from string: String) -> UIImage {
            let data = Data(string.utf8)
            // Key에 따라 다양한 값들을 줄 수 있어요! 높이나 너비 등 여러가지를 넣을 수 있는데 저흰 QRCode에 text를 담을꺼니깐 inputMessage라는 Key를 사용해줄겁니다!
            filter.setValue(data, forKey: "inputMessage")
            
            if let qrCodeImage = filter.outputImage {
                // qr 이미지를 만들게 되면 해상도가 정해져있어서 좀 더 선명하게 보이도록 하기 위해 가로, 세로를 5배씩 늘려주겠습니다!
                let transform = CGAffineTransform(scaleX: 5, y: 5)
                let scaledCIImage = qrCodeImage.transformed(by: transform)
                if let qrCodeCGImage = context.createCGImage(scaledCIImage, from: scaledCIImage.extent) {
                    // Image에 바로 넣을 수 있도록 UIImage로 변환해 줍니다.
                    return UIImage(cgImage: qrCodeCGImage)
                }
            }
            // 변환에 실패했을 때
            return UIImage(systemName: "xmark") ?? UIImage()
        }
    }

     

    짠!!!!!

     


     

     

     

    어떤가요? 생각보다 매우 간단하지 않나요?

    너무 급 마무리를 하는 것 같은 느낌인데ㅎㅎㅎㅎㅎ

    다음 시간에는 QR을 Scan 하는 기능에 대해서 공부해봅시다!

     

     

     

    혹시라도 부족하거나 잘못된 부분 그리고 질문 있으시면 언제든 댓글 부탁드려요! 감사합니다!👦🏻👋🏻

     

    728x90
    반응형

    '오늘의 Swift 상식' 카테고리의 다른 글

    ScreenShot(Save, Share)  (0) 2021.10.22
    QR code - Scan!  (0) 2021.09.21
    Protocol 2편 (Delegation, Extension, 상속, 합성)  (0) 2021.08.25
    Protocol 1편 (Protocol 정의 방법)  (0) 2021.08.16
    Class의 상속  (0) 2021.08.15

    댓글

Designed by Tistory.