2015-08-26 4 views
1

Как говорится в названии, мне нужно реализовать GaussianBlur для UIImage; Я попытался найти учебник, но я не могу его реализовать. Я попробовал этотПрименить CiFilter GaussianBlur

var imageToBlur = CIImage(image: coro.logo) 
var blurfilter = CIFilter(name: "CIGaussianBlur") 
blurfilter.setValue(imageToBlur, forKey: "inputImage") 
blurfilter.setValue(2, forKey: "inputImage") 
var resultImage = blurfilter.valueForKey("outputImage") as! CIImage 
var blurredImage = UIImage(CIImage: resultImage) 
self.immagineCoro.image = blurredImage 

импортируя рамки CoreImage, но Xcode показывает мне ошибку («NSInvalidArgumentException») в строке 5. Может ли кто-нибудь помочь мне реализовать gaussianBlur и CIFilter в целом?

Редактировать: спасибо вам обоим, но у меня есть другой вопрос; Мне нужно применить размытие только к небольшой части изображения, как этот

enter image description here

ответ

2

вы использовали inputImage дважды. Второй раз, вероятно, должен быть inputRadius.

+0

Да, это было! поэтому я понимаю, что мне нужно изучить аргументы Apple. Последний вопрос: возможно ли открыть представление, в котором я применил CIFilter, симулятор iOS использует большой объем ресурсов (около 60 мб, вместо 30, которые он использует ранее)? –

3

Я просто попробовал ваш код, а вот модификация я предлагаю, это работает:

let fileURL = NSBundle.mainBundle().URLForResource("th", withExtension: "png") 
    let beginImage = CIImage(contentsOfURL: fileURL) 
    var blurfilter = CIFilter(name: "CIGaussianBlur") 
    blurfilter.setValue(beginImage, forKey: "inputImage") 
    //blurfilter.setValue(2, forKey: "inputImage") 
    var resultImage = blurfilter.valueForKey("outputImage") as! CIImage 
    var blurredImage = UIImage(CIImage: resultImage) 
    self.profileImageView.image = blurredImage 

Итак, закомментировать часть, которую вы видите выше, сделал трюк, и я получаю размытое изображение, как ожидалось. И я использую путь к файлу, но это не должно меняться от того, что у вас есть.

0

Возможно, вы захотите создать изображение маски серой шкалы CIImage с нужной формой, размытым CIImage (используя CIGaussianBlur), а затем использовать CIBlendWithMask, чтобы объединить их.

Входы CIBlendWithMask - это входное изображение (размытое изображение), входное фоновое изображение (неровное изображение) и изображение маски (форма, которую вы хотите). Вывод - это изображение, которое вы желаете.