2014-10-10 1 views
2

Я ищу способ добавить эффект размытия в NSImage с помощью Swift.Добавление размытия к NSImage с помощью Swift

развивается прошивкой, UIImage предоставляет метод, как

applyLightEffectAtFrame:frame 

... но я не мог найти что-то равное для какао/с OSX-App.

редактировать 1: я пытался использовать CIFilter:

let beginImage = CIImage(data: responseData) 
let filter = CIFilter(name: "CIGaussianBlur") 
filter.setValue(beginImage, forKey: kCIInputImageKey) 
filter.setValue(0.5, forKey: kCIInputIntensityKey) 
// HOW CAN I MAKE AN NSIMAGE OUT OF THE CIIMAGE? 
let newImage = ??? 
imageView.image = newImage 
+0

фильтров Основных изображений являются общим эквивалентом много эффектов изображения вы можете найти на прошивке. – CodaFi

+0

отредактировал мой вопрос выше; Я пытался использовать CIFilter, думая, что я нахожусь на хорошем пути, но не смог узнать, как я могу преобразовать CIImage обратно в NSImage? – ixany

+0

Это довольно простой процесс с использованием репрезентаций изображений. См. Http://stackoverflow.com/questions/17386650/converting-ciimage-into-nsimage – CodaFi

ответ

1

Я решил эту проблему, просто добавив фильтр контента в мой NSImageView в Interface-Builder.

0

Следующий (взято из here) работает для меня

var originalImage = NSImage(named: "myImageName") 
    var inputImage = CIImage(data: originalImage?.TIFFRepresentation) 
    var filter = CIFilter(name: "CIGaussianBlur") 
    filter.setDefaults() 
    filter.setValue(inputImage, forKey: kCIInputImageKey) 
    var outputImage = filter.valueForKey(kCIOutputImageKey) as CIImage 
    var outputImageRect = NSRectFromCGRect(outputImage.extent()) 
    var blurredImage = NSImage(size: outputImageRect.size) 
    blurredImage.lockFocus() 
    outputImage.drawAtPoint(NSZeroPoint, fromRect: outputImageRect, operation: .CompositeCopy, fraction: 1.0) 
    blurredImage.unlockFocus() 

    imageView.image = blurredImage 

Надеется, что это помогает пришельцы