2015-07-27 5 views
4

Я использую Swift для разработки приложения iOS с функцией камеры, и для этого требуется слой размытия над изображением камеры с отверстием посередине, как показано на рисунке ниже.Как добавить маску размытия с пользовательской формой над динамическим видом камеры в Swift?

Я пробовал несколько методов, но ни один из них не добавил эффект размытия, не закрывая отверстие. Я не нашел рабочих решений, потратив время на Google.

Может ли кто-нибудь пояснить, как я могу только размыть непереносимую часть изображения png, прикрепленного к представлению изображения?

Методы, которые я пытался:

  1. Используйте встроенный в IOS 8 эффект размытия

    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark) 
    let blurEffectView = UIVisualEffectView(effect: blurEffect) 
    maskImage.addSubview(blurEffectView) 
    
  2. Используйте "CIGaussianBlur" Фильтр

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

Визу аль эффект, который я хочу иметь:

enter image description here

+0

Кстати, текущий слой представляет собой формат PNG изображение с отверстие в середине, которое было прикреплено к представлению изображения над изображением камеры. –

ответ

1

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

См documetation здесь:

https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_paths/dq_paths.html

Есть много задокументированных примеров этого, хотя, здесь один: drawing with clear color on UIView (cutting a hole) in static method

+1

Извините за мой поздний ответ. Не могли бы вы предоставить часть кода, как вы ее разрешили? Я не понял, как просто вырезать отверстие из UIImageView после прочтения ссылок. Благодаря! –

+0

Некоторые примеры кода или более четкое объяснение действительно помогли бы этому ответу быть более полезным. Было бы очень признательно. – Joel

Смежные вопросы