获取错误 [UIImage 范围]:无法识别的选择器发送到实例
Getting error [UIImage extent]: unrecognized selector sent to instance
我正在尝试对我的 UIImageView 应用径向模糊,但是当我尝试这样做时出现错误
[UIImage extent]: unrecognized selector sent to instance
我使用的代码来自示例:
https://developer.apple.com/documentation/coreimage/selectively_focusing_on_an_image
let h = bgImage.image!.size.height
let w = bgImage.image!.size.width
guard let radialMask = CIFilter(name:"CIRadialGradient") else {
return
}
let imageCenter = CIVector(x:0.55 * w, y:0.6 * h)
radialMask.setValue(imageCenter, forKey:kCIInputCenterKey)
radialMask.setValue(0.2 * h, forKey:"inputRadius0")
radialMask.setValue(0.3 * h, forKey:"inputRadius1")
radialMask.setValue(CIColor(red:0, green:1, blue:0, alpha:0),
forKey:"inputColor0")
radialMask.setValue(CIColor(red:0, green:1, blue:0, alpha:1),
forKey:"inputColor1")
guard let maskedVariableBlur = CIFilter(name:"CIMaskedVariableBlur") else {
return
}
maskedVariableBlur.setValue(bgImage.image, forKey: kCIInputImageKey)
maskedVariableBlur.setValue(10, forKey: kCIInputRadiusKey)
maskedVariableBlur.setValue(radialMask.outputImage, forKey: "inputMask")
let selectivelyFocusedCIImage = maskedVariableBlur.outputImage/
其中bgImage
是一个UIImageView
我做错了什么?
我看到两个问题
- 一个是你明确地展开可选的。
让 h = bgImage.image!.size.height
让 w = bgImage.image!.size.width
请在此处使用 guard 以避免意外崩溃
- 第二期是 bgImage.image!.size.height。在这里你应该使用 bgImage.image.CIImage.size 或类似 @image.CIImage.size 的东西。
请参考下面类似的post。我希望这会有所帮助
Unrecognized selector sent to UIImage?
你需要
guard let image = maskedVariableBlur?.image, cgimg = image.CGImage else {
print("imageView doesn't have an image!")
return
}
作为
let coreImage = CIImage(CGImage:cgimg)
maskedVariableBlur.setValue(coreImage, forKey: kCIInputImageKey)
期望 CIImage
而不是 UIImage
我正在尝试对我的 UIImageView 应用径向模糊,但是当我尝试这样做时出现错误
[UIImage extent]: unrecognized selector sent to instance
我使用的代码来自示例: https://developer.apple.com/documentation/coreimage/selectively_focusing_on_an_image
let h = bgImage.image!.size.height
let w = bgImage.image!.size.width
guard let radialMask = CIFilter(name:"CIRadialGradient") else {
return
}
let imageCenter = CIVector(x:0.55 * w, y:0.6 * h)
radialMask.setValue(imageCenter, forKey:kCIInputCenterKey)
radialMask.setValue(0.2 * h, forKey:"inputRadius0")
radialMask.setValue(0.3 * h, forKey:"inputRadius1")
radialMask.setValue(CIColor(red:0, green:1, blue:0, alpha:0),
forKey:"inputColor0")
radialMask.setValue(CIColor(red:0, green:1, blue:0, alpha:1),
forKey:"inputColor1")
guard let maskedVariableBlur = CIFilter(name:"CIMaskedVariableBlur") else {
return
}
maskedVariableBlur.setValue(bgImage.image, forKey: kCIInputImageKey)
maskedVariableBlur.setValue(10, forKey: kCIInputRadiusKey)
maskedVariableBlur.setValue(radialMask.outputImage, forKey: "inputMask")
let selectivelyFocusedCIImage = maskedVariableBlur.outputImage/
其中bgImage
是一个UIImageView
我做错了什么?
我看到两个问题 - 一个是你明确地展开可选的。 让 h = bgImage.image!.size.height 让 w = bgImage.image!.size.width 请在此处使用 guard 以避免意外崩溃
- 第二期是 bgImage.image!.size.height。在这里你应该使用 bgImage.image.CIImage.size 或类似 @image.CIImage.size 的东西。
请参考下面类似的post。我希望这会有所帮助
Unrecognized selector sent to UIImage?
你需要
guard let image = maskedVariableBlur?.image, cgimg = image.CGImage else {
print("imageView doesn't have an image!")
return
}
作为
let coreImage = CIImage(CGImage:cgimg)
maskedVariableBlur.setValue(coreImage, forKey: kCIInputImageKey)
期望 CIImage
而不是 UIImage