2017-07-01 38 views
0

我嘗試使用此代碼,將圖像保存在我的iPhone用戶的相機膠捲:保存到用戶的照片庫靜靜地失敗

UIImageWriteToSavedPhotosAlbum(uiImage, nil, nil, nil)

但是,儘管沒有崩潰或給了一個錯誤,這是失敗的。我確信圖像是一個有效的(而不是無)UIImage,它是。所以然後我試圖執行完成處理程序像這樣:

UIImageWriteToSavedPhotosAlbum(uiImage, self, #selector(self.image(_:didFinishSavingWithError:contextInfo:)), nil) 

// .... 

@objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) { 
    if error != nil { 
     print("ERROR! ", error!.localizedDescription) 
    } 
} 

但是,這仍然沒有給我一個錯誤。最後,我試着在模擬器上運行。這就給了我以下錯誤:

Connection to assetsd was interrupted or assetsd died

Error! Write failed

是什麼導致了這種失敗?

回答

0

我遇到了this link這說明爲了運行UIImageWriteToSavedPhotosAlbum,UIImage「必須是CGImage支持的」。因此,要解決,我寫了下面的代碼,以我的UIImage轉換成CIImage,然後進入一個CGImage,再換一個UIImage:

let ciImage = self.image!.ciImage 
let context = CIContext() 
let cgImage = context.createCGImage(ciImage!, from: ciImage!.extent) 
let uiImage = UIImage(cgImage: cgImage!) 

UIImageWriteToSavedPhotosAlbum(uiImage, self, #selector(self.image(_:didFinishSavingWithError:contextInfo:)), nil) 

這最後的工作,並如預期保存到相機膠捲!