teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

解決した為、その部分のコードを追記

2021/04/26 01:20

投稿

aaru
aaru

スコア1

title CHANGED
File without changes
body CHANGED
@@ -87,4 +87,13 @@
87
87
  ```
88
88
  ただ、合成後の画像がカメラロールに保存できないです。
89
89
  保存完了のメッセージは出るのですが、カメラロールに存在しません。
90
- 何か確認すべき点などございませんでしょうか。
90
+ 何か確認すべき点などございませんでしょうか。
91
+
92
+ 追記2
93
+ CIIImageからUIImageへの変換を一旦、CGImageに変換しUIImageに変換することで保存出来ました
94
+ ```swift
95
+ let context = CIContext()
96
+ let cgImage = context.createCGImage(compositeImage!,from: compositeImage!.extent)
97
+ let image2 = UIImage(cgImage: cgImage!)
98
+ self.displayView.image = image2
99
+ ```

1

ご指摘を受け、お教え頂いたヒントより一部解決した為、その部分を追記

2021/04/26 01:20

投稿

aaru
aaru

スコア1

title CHANGED
File without changes
body CHANGED
@@ -66,4 +66,25 @@
66
66
 
67
67
  self.displayView.image = si?.masking(maskImage: mi)
68
68
  の後にself.displayView.imageをカメラロールに保存しているのですが、オリジナルの画像が保存され、切り抜き画像の保存が行えません。画面での見た目は、切り抜かれた画像(犬)が表示されています。
69
- 切り抜き画像の保存方法と切り抜き画像と別に用意した背景画像の合成方法をお教えいただけませんでしょうか。
69
+ 切り抜き画像の保存方法と切り抜き画像と別に用意した背景画像の合成方法をお教えいただけませんでしょうか。
70
+
71
+ 追記
72
+ CIFilterを使用し、合成を行うことができました。
73
+ ```Swift
74
+ let si = UIImage.init(named: "org.jpg")
75
+ let mi = UIImage.init(named: "mask.jpg")
76
+ let bi = UIImage.init(named: "photo.jpg")
77
+
78
+ let sci = CIImage(image: si!)
79
+ let mci = CIImage(image: mi!)
80
+ let bci = CIImage(image: bi!)
81
+
82
+ let compositeImage = CIFilter(name: "CIBlendWithMask", parameters: [
83
+ kCIInputImageKey: sci,
84
+ kCIInputBackgroundImageKey:bci,
85
+ kCIInputMaskImageKey:mci])?.outputImage
86
+ self.displayView.image = UIImage(ciImage: compositeImage!)
87
+ ```
88
+ ただ、合成後の画像がカメラロールに保存できないです。
89
+ 保存完了のメッセージは出るのですが、カメラロールに存在しません。
90
+ 何か確認すべき点などございませんでしょうか。