Получение ошибки [UIImage экстент]: нераспознанный селектор отправлен на экземпляр - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь применить радиальное размытие к моему UIImageView, но когда я пытаюсь это сделать, я получаю ошибку

[UIImage экстент]: нераспознанный селектор отправлен в экземпляр

Код, который я использую, взят из примера на: 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

Что я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Вам нужно

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

0 голосов
/ 09 ноября 2018

вижу два вопроса - Одним из них является то, что вы распаковываете опционально. let h = bgImage.image! .size.height let w = bgImage.image! .size.width Пожалуйста, используйте охрану, чтобы избежать неожиданных сбоев

  • Второй вопрос - bgImage.image! .Size.height. Здесь вы должны использовать bgImage.image.CIImage.size или что-то вроде @ image.CIImage.size.

Пожалуйста, обратитесь ниже аналогичный пост. Я надеюсь, что это должно помочь

Неопознанный селектор отправлен в UIImage?

...