我正在关注核心图像部分中的iOS 9开发书籍。我在向UIImage应用过滤器时遇到了一个问题。
以下代码摘自这本书:
resultHandler: { (image: UIImage?, info: [NSObject : AnyObject]?) -> Void in
if let image = image, var ciImage = CIImage(image: image) where SLComposeViewController.isAvailableForServiceType(SLServiceTypeTwitter) {
ciImage = ciImage.imageByApplyingFilter("CIPixellate", withInputParameters: ["inputScale" : 10.0])
let ciContext = CIContext(options: nil)
let cgImage = ciContext.createCGImage(ciImage, fromRect: ciImage.extent)
let tweetImage = UIImage(CGImage: cgImage)
let tweetVC = SLComposeViewController(forServiceType:SLServiceTypeTwitter)
tweetVC.setInitialText("Here's a photo I tweeted. #pragsios9")
tweetVC.addImage(tweetImage)
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.presentViewController(tweetVC, animated: true, completion: nil) })
}
})代码构建并运行,但当我单击该resultHandler时,将输出以下日志:
CreateWrappedSurface() failed for a dataprovider-backed CGImageRef.图像没有像素化。
一步一步地遵循这本书,在这一点上,简单地复制和粘贴该代码。
更新
追踪它一点,似乎CIImage(image: image)正在失败。我正在使用来自模拟器的示例图像的第一个图像。
我设法得到了一个不同的图像,它实际上是像素化的,但仍然得到日志消息。
发布于 2016-06-24 02:36:49
调用CGImage引用似乎消除了消息: var ciImage = CIImage(CGImage: image.CGImage)
https://stackoverflow.com/questions/33839105
复制相似问题