cocoa - Errors with CIFilter and Swift 2: '_' is not convertible to 'String' + Type of expression is ambiguous without more context -
i used piece of code in swift 1.2 (adapted objective-c snippet found on so) apply blur effect on image.
it working ok can't convert swift 2, i'm not sure understand error messages , can't find documentation has changed.
error message:
'_' not convertible 'string'
and:
type of expression ambiguous without more context
extension worked 1.2:
extension nsimage { func gaussianblurofradius(radius: cgfloat) -> nsimage { let image = self image.lockfocus() let beginimage = ciimage(data: image.tiffrepresentation!) // error message highlights next line let params = [kciinputimagekey: beginimage, kciinputradiuskey: radius] let filter = cifilter(name: "cigaussianblur", withinputparameters: params) var output = filter.valueforkey("outputimage") as! ciimage let rect = nsmakerect(0, 0, self.size.width, self.size.height) output.drawinrect(rect, fromrect: rect, operation: nscompositingoperation.compositesourceover, fraction: 1) image.unlockfocus() return image } }
update:
following duncan's idea, i've added explicit type declaration:
let params: [string: anyobject] = [kciinputimagekey: beginimage, kciinputradiuskey: radius]
but doesn't fix it, though removes error message type ambiguity.
extension nsimage { func gaussianblurofradius(radius: cgfloat) -> nsimage { let image = self image.lockfocus() let beginimage = ciimage(data: image.tiffrepresentation!)! let params = [kciinputimagekey : beginimage, kciinputradiuskey: radius] let filter = cifilter(name: "cigaussianblur", withinputparameters: params)! let output = filter.valueforkey("outputimage") as! ciimage let rect = nsmakerect(0, 0, size.width, size.height) output.drawinrect(rect, fromrect: rect, operation: nscompositingoperation.compositesourceover, fraction: 1) image.unlockfocus() return image } }
or
extension nsimage { func gaussianblurofradius(radius: cgfloat) -> nsimage { let image = self image.lockfocus() let beginimage = ciimage(data: image.tiffrepresentation!) let filter = cifilter(name: "cigaussianblur")! filter.setvalue(beginimage, forkey: kciinputimagekey) filter.setvalue(radius, forkey: kciinputradiuskey) let output = filter.valueforkey("outputimage") as! ciimage let rect = nsmakerect(0, 0, size.width, size.height) output.drawinrect(rect, fromrect: rect, operation: nscompositingoperation.compositesourceover, fraction: 1) image.unlockfocus() return image } }
Comments
Post a Comment