728x90
안녕하세요. iOSangBong 입니다.
오늘은 QRCode를 만들어보려고 합니다.
QRCode 만드는 방법은 아~주 간단합니다.
CIFilter 안에 qrCodeGenerator를 사용하면 되는데
1. 우선 CoreImage.CIFilterBuiltins를 import 해줍니다.
import CoreImage.CIFilterBuiltins
2. 이미지 렌더링에 필요한 CIContext와 QR 코드 생성을 해주는 CIFilter.qrCodeGenerator()를 선언해줍니다.
// 이미지 렌더링을 처리하는 부분
let context = CIContext()
// QR 코드 생성기 필터
let filter = CIFilter.qrCodeGenerator()
3. QR Code에 원하는 데이터를 넣어줍니다.
추가적으로 다른 항목을 넣어줄 수 있지만 저는 제 블로그 주소를 넣겠습니다.
// QR 데이터 생성해주기.
let qrData = "https://iosangbong.tistory.com/"
// 필터에 원하는 Text를 넣어줍니다.
filter.setValue(qrData.data(using: .utf8), forKey: "inputMessage")
4. 마지막으로 이미지를 렌더링해주면 끝
if let qrCodeImage = filter.outputImage {
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)
}
}
5. 진짜 마지막 결과는?
아래의 QR코드를 카메라로 찍어보면 제 블로그로 이동하시는걸 볼 수 있습니다.
정말 쉽죠~?
참고를 위해 풀코드를 올려놓겠습니다.
import UIKit
import CoreImage.CIFilterBuiltins
open class BongQRCode {
// QR코드 생성하는 로직.
public class func generateQRCode() -> UIImage {
// 이미지 렌더링을 처리하는 부분
let context = CIContext()
// QR 코드 생성기 필터
let filter = CIFilter.qrCodeGenerator()
// QR 데이터 생성해주기.
let qrData = "https://iosangbong.tistory.com/"
// 필터에 원하는 Text를 넣어줍니다.
filter.setValue(qrData.data(using: .utf8), forKey: "inputMessage")
if let qrCodeImage = filter.outputImage {
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)
}
}
// 변환 실패를 했을 경우 UIImage()를 넣어줍니다.
return UIImage()
}
}
https://github.com/bongbong9708/BongStorage
다들 즐코딩 하세요. 그럼 이만~
728x90
'Swift' 카테고리의 다른 글
[iOS][Swift] LocalAuthentication Face ID & Touch ID 생체인식 간단하게 알아보기 (0) | 2024.08.03 |
---|---|
[iOS][Swift] shake motion 알아보기 (0) | 2023.08.22 |
[iOS][Swift] 'keyWindow' was deprecated 간단하게 해결하기 (0) | 2023.08.11 |
[iOS][Swift] NWPathMonitor 네트워크 간단하게 감지하기 (0) | 2023.07.26 |
[iOS][Swift] MQTT 간단하게 연결하기 (0) | 2023.07.22 |