【发布时间】:2019-06-01 11:59:50
【问题描述】:
我创建了一个具有不同颜色的 QRCode 生成器我想删除 Frame 中的灰色,并且在我使用这个灰色的过滤器后实际上只有一种白色或清晰的颜色 产生一些时间
let data = string.data(using: .isoLatin1, allowLossyConversion: false)
if let filter = CIFilter(name: "CIQRCodeGenerator") {
guard let colorFilter = CIFilter(name: "CIFalseColor") else { return nil }
filter.setValue(data, forKey: "inputMessage")
filter.setValue("H", forKey: "inputCorrectionLevel")
colorFilter.setValue(filter.outputImage, forKey: "inputImage")
colorFilter.setValue(CIColor(color: UIColor.clear), forKey: "inputColor1")
colorFilter.setValue(CIColor(color: UIColor.black), forKey: "inputColor0")
guard let qrCodeImage = colorFilter.outputImage
else {
return nil
}
let scaleX = imageView.frame.size.width / qrCodeImage.extent.size.width
let scaleY = imageView.frame.size.height / qrCodeImage.extent.size.height
let transform = CGAffineTransform(scaleX: scaleX, y: scaleY)
if let output = colorFilter.outputImage?.transformed(by: transform) {
let image = convert(cmage:(output.transformed(by: CGAffineTransform(scaleX: scaleX, y: scaleY))))
return image
}
}
return nil
}
func convert(cmage:CIImage) -> UIImage
{
let context:CIContext = CIContext.init(options: nil)
let cgImage:CGImage = context.createCGImage(cmage, from: cmage.extent)!
let image:UIImage = UIImage.init(cgImage: cgImage)
return image
}
如果我不使用过滤器更改颜色,我没有这个问题 或者如果我使用蓝色,我有一个水蓝色框架
【问题讨论】:
-
为什么在生成二维码后需要使用过滤器
CIFalseColor?你想达到什么目的?我会简单地删除 CIFalseColor 并对二维码过滤器生成的二维码图像应用简单的比例变换。 -
顺便说一句 CIQRCodeGenerator 工作代码示例在这里stackoverflow.com/a/51181064/2303865
-
@LeoDabus 我想将颜色更改为蓝色二维码或红色等...但在所有二维码框架中,我在框架中收到相同的问题
-
@LeoDabus 我要更改二维码颜色
-
我没看懂你的问题,你的图片是白色的,已经有灰色阴影了
标签: ios swift uiimage qr-code cifilter