CIFilter したUIImageを UIImageWriteToSavedPhotosAlbum で保存できない。CIFilter を適用する前のUIImageは、保存できる。
原因
CIFilterを適用後、CIImageから UIImage を作成したときにプロパティがNULL になっているため。
参考
UIImageWriteToSavedPhotosAlbum() doesn’t save cropped image
CoreImageでエフェクトした画像がUIActivityViewControllerで画像保存できない
対応
func savePhoto(image: UIImage) let ciImage = image?.ciImage let ciContext = CIContext(options: nil) let cgImage = ciContext.createCGImage(ciImage!, from: ciImage!.extent) let uiImageToSave = UIImage(cgImage: cgImage!, scale: 1.0, orientation: .up) UIImageWriteToSavedPhotosAlbum(uiImageToSave, self, #selector(didFinishSavingImage), nil) } // エラーの場合アラートを出力 @objc func didFinishSavingImage(_ image: UIImage, didFinishSavingWithError error: NSError!, contextInfo: UnsafeMutableRawPointer) { if error != nil { let alertController = UIAlertController(title: "Error", message: "Save Error", preferredStyle: .alert) alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) self.present(alertController, animated: true, completion: nil) } }