2015-11-21 14 views
1

我正在關注Core Image部分的iOS 9開發手冊。將濾鏡應用於UIImage時遇到了一個問題。CreateWrappedSurface()失敗了一個dataprovider支持的CGImageRef

下面的代碼是從書上採取:

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)失敗。我正在使用來自模擬器的示例圖像中的第一幅圖像。

我設法得到一個不同的圖像,它實際上獲得像素化,但仍然得到該日誌消息。

回答

0

調用CGImage參考似乎擺脫了消息: VAR ciImage = CIImage(CGImage:image.CGImage)

相關問題