前提
Swfit 5.0
Xcode 11
発生している問題
QRやバーコード生成のソースを拝見していると、下記の参考コードのようにCGAffineTransform
を使用してスケール設定しているものが多く見られます。
このスケールをすることの意味が分からないでいるので教えて頂けますと幸いです。
・なぜスケールしないとだめなのか
→ outputImage
をそのままUIImage
に変換ではなぜだめなのか
→ スケールさせる必要があるならば、望まれるスケール値はどうやって決めるべきなのか
ということが分からなかったです。
参考コード
swift
1func generateBarcode(from string: String) -> UIImage? { 2 let data = string.data(using: String.Encoding.ascii) 3 4 if let filter = CIFilter(name: "CICode128BarcodeGenerator") { 5 filter.setValue(data, forKey: "inputMessage") 6 let transform = CGAffineTransform(scaleX: 3, y: 3) 7 8 if let output = filter.outputImage?.transformed(by: transform) { 9 return UIImage(ciImage: output) 10 } 11 } 12 13 return nil 14}
swift
1private var QRImage: UIImage? { 2 guard let message = messageTextField.text, 3 let correctionLevelString = correctionLevelTextField.text, 4 let correctionLevel = InputCorrectionLevel(rawValue: correctionLevelString) else { return nil } 5 let data = message.data(using: .utf8)! 6 7 let qr = CIFilter(name: "CIQRCodeGenerator", parameters: ["inputMessage": data, "inputCorrectionLevel": correctionLevel.rawValue])! 8 let sizeTransform = CGAffineTransform(scaleX: 10, y: 10) 9 let qrImage = qr.outputImage!.transformed(by: sizeTransform) 10 let image = UIImage(ciImage: qrImage) 11 return image 12 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。