質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2164閲覧

ディレクトリの画像の保存と取得

midori0822

総合スコア61

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/04/20 21:05

こんにちは。
タイトルのような機能を実装したいです。下記のコードでは画像が表示されません。原因は何だと思いますか。
○保存(カメラロール→ディレクトリ)

swift

1let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 2 3@IBAction func pictureButton(_ sender: Any) { 4 if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { 5 // 写真を選ぶビュー 6 let pickerView = UIImagePickerController() 7 // 写真の選択元をカメラロールにする 8 // 「.camera」にすればカメラを起動できる 9 pickerView.sourceType = .photoLibrary 10 // デリゲート 11 pickerView.delegate = self 12 // ビューに表示 13 self.present(pickerView, animated: true) 14 } 15 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 16 // 選択した写真を取得する 17 if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { 18 if ccc == 500 { 19 let fileName = "image..." + String(describing: image) 20 saveImageToDocumentsDirectory(Image: image, filename: fileName) 21 array.append(fileName) 22 tableView.reloadData() 23 } else if ccc != 500 { 24 let fileName = "image..." + String(describing: image) 25 saveImageToDocumentsDirectory(Image: image, filename: fileName) 26 array.insert(fileName, at: ccc) 27 ccc = 500 28 tableView.reloadData() 29 } 30 // 写真を選ぶビューを引っ込める 31 self.dismiss(animated: true) 32 33 } 34 } 35 } 36 func saveImageToDocumentsDirectory(Image: UIImage, filename: String) -> Bool { // ファイルに画像を保存 37 if let data = UIImagePNGRepresentation(Image) { 38 let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 39 let fileURL = documentsURL.appendingPathComponent(filename) 40 do { 41 try data.write(to: fileURL) 42 } catch { 43 //エラー処理 44 return false 45 } 46 } 47 return true 48 } 49

○取得

swift

1 2let fileName = array[indexPath.row].replacingOccurrences(of: "image...", with: "") 3let fileURL = documentsURL.appendingPathComponent(fileName) 4let imageData = try? Data(contentsOf: fileURL) 5let image = UIImage(data:imageData!) 6imageImage.image = image

array:StringにはStringの文とurlをStringに変換したものが入っています。
"image..."はそれらを区別するためにつけているものです。
実際にカメラロールから取得しても元の画面に戻るだけで何も画像は表示されませんでした。
上のコードでは何が原因で画像を保存または表示できなかったのでしょうか。
分かる方ご回答お待ちしております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

let fileName = "image..." + String(describing: image) saveImageToDocumentsDirectory(Image: image, filename: fileName)

で保存時のファイル名には「image...」が付いている一方で、

let fileName = array[indexPath.row].replacingOccurrences(of: "image...", with: "") let fileURL = documentsURL.appendingPathComponent(fileName)

取得時には「image...」を取り除いているので

ファイル名が異なっているということはないでしょうか?

投稿2018/04/20 21:43

newmt

総合スコア1277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

midori0822

2018/04/20 22:07

すいませんfileNameを勘違いしていました。 .replacingOccurrences(of: "image...", with: "")を取り除いてやっても結果は変わりませんでした。 saveImageToDocumentsDirectory(Image: image, filename: fileName)のところに警告で Result of call to 'saveImageToDocumentsDirectory(Image:filename:)' is unusedと出ているので、保存には成功していて、それの出力がうまくいってないということでしょうか
newmt

2018/04/20 22:52

この警告はメソッドの戻り値をどこでも使用していないという警告です。例えば、 let result = saveImageToDocumentsDirectory(Image: image, filename: fileName) print(result) とした場合、resultがtrueならば保存に成功、falseならば失敗ということになります。 これはどちらが出力されますでしょうか? また、保存処理の際のfileURLと取得処理のfileURLは一致していますでしょうか?
midori0822

2018/04/21 12:46

画像を表示したいところがtableViewのカスタムセルの中だったのですが、試しに他にimageViewをおいて出力してみると画像が表示されました! どうやら間違っていたのは保存、取得のどちらでもなくカスタムセルの方だったようです… 今回も回答していただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問