인쇄할 라벨에 들어갈 바코드 이미지를 출력하기 위해 바코드 생성법을 알아보자!
1. code 128 형식의 바코드 생성
func generateBarcode(barcode: String) -> UIImage? {
let data = string.data(using: String.Encoding.ascii)
if let filter = CIFilter(name: "CICode128BarcodeGenerator") {
filter.setValue(data, forKey: "inputMessage")
let transform = CGAffineTransform(scaleX: 3, y: 3)
if let output = filter.outputImage?.transformed(by: transform) {
return UIImage(ciImage: output)
}
}
return nil
}
String을 바코드 형식의 이미지로 변환하기 위해서는 우선 String.Encoding.ascii를 이용하여 String을 Data 타입으로 바꿔주어야 한다.
let image = generateBarcode(barcode: "barcode_number")
변환된 바코드 이미지를 이미지로 생성해주면 끝!
참고 : Hacking with Swift, Apple Developer Forums
2. EAN13 형식의 바코드 생성
0507 문제 발생!
프로젝트에서는 EAN13 바코드 형식을 읽어들이도록 되어있는데,
위의 코드로 바코드 변환을 해주었더니 code 128 형식의 바코드로 출력이 되어 인식이 안된다는 것!! 😱
그러면 어떻게 해야할까...
위 코드의 CICode128BarcodeGenerator는 swift에 내장되어있어 code128 형식의 바코드로 손쉽게 변환할 수 있는 것 같지만,
String 에서 EAN13 형식의 바코드로 변환하기 위해서는 EANBarcodeGenerator라는 framework를 따로 추가해주어야 하나보다.
1. cocoapod install
podfile에 pod 'EANBarcodeGenerator' 을 추가해주고 pod install
2. xcode project
코드에서는 import EANBarcodeGenerator 해주고 다음의 코드로 바코드 이미지를 생성해준다.
func generateBarcode(barcode: String) -> UIImage? {
CIEANBarcodeGenerator.register()
if let filter = CIFilter(name: "CIEANBarcodeGenerator") {
filter.setValue(barcode, forKey: "inputMessage")
if let output = filter.outputImage {
return UIImage(ciImage: output)
}
}
return nil
}
let barcodeView = UIImageView()
barcodeView.image = generateBarcode(barcode: "1234567891234"
이런식으로 생성된 이미지를 ImageVIew()에 넣으면 적용완료 😊
테스트해보니 이제 인식도 잘 된다!!
안드로이드에서 인쇄된 라벨 바코드랑 생김새는 쵸콤 다르지만 인식만 되면 된다고 괜찮다고 하셨다.
바코드 생성 해결 완료~~~~
참고 : Github_EANBarcodeGenerator
+ CIFilter를 이용해서 바코드 이미지를 생성해주었는데, 이미지 변환을 위한 필터들로 다양하게 사용이 가능한 것 같다.
그런데 이게 필터 이름이 다 String으로 되어있어서 찾아보니 다음 애플 개발자 페이지에서 제공되는 CIFilter들을 찾아볼 수 있을 것 같다!
'초보 iOS 개발자의 일상 > 개발 업무' 카테고리의 다른 글
[Swift iOS] UIView를 UIImage로 변환하기 (0) | 2021.05.04 |
---|---|
[Swift iOS] Custom Font 추가 (0) | 2021.05.04 |
[Swift iOS] UINavigationController 화면 이동 (0) | 2021.04.27 |
[Swift iOS] Alamofire 사용하여 Rest API 호출하기 Get / Post (0) | 2021.04.26 |
[Swift iOS] Brother Print SDK 프린트 연결 및 라벨 인쇄하기 (0) | 2021.04.23 |