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

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

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

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

1回答

5390閲覧

カメラで撮った写真をデータベースから引っ張ってくる

tarofess

総合スコア127

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

1クリップ

投稿2015/08/27 09:49

iOSで現在、カメラで撮った写真をデータベースに保存し、写真データを表示したいときにはデータベースから引っ張ってこようとしているのですが、実現するためにいくつか質問させていただきたいです。
色々なサイトを見ているとカメラで撮った写真は直接データベースに保存するのではなく、保存先のパスをデータベースに保存したほうがいいという意見が多く、僕もそのやり方で実装しようとしているのですが、カメラで撮影した画像はどこに保存すればいいのでしょうか?保存先はiOS/Documents/Image/flower.png などのようにこちらからパスを指定して保存するのでしょうか?それともカメラロールに保存してカメラロールからパスを取得したりするのでしょうか?どういった処理が一般的なのでしょうか?しかしiPhoneに最初からある連絡先アプリのユーザ情報を編集するときは画像を撮影してもカメラロールに保存されてないので、できればカメラロールを使わない方法で実装したいです。
また、カメラ撮影をした後に保存先のパスを取得するとなると、どのように取得すればよろしいでしょうか?カメラ撮影が完了したことを検知するデリゲートメソッドを探しても見当たらないのでどうすればいいのか分かりません。以下のメソッドを実装してもカメラ撮影後に以下のメソッドが呼ばれず、カメラロールから写真を選んだときしか呼ばれません。

objective

1- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

なのでこの先どうすればいいのかが分かりません。
どなたか分かる方がいれば解決方法を教えていただきたいです。
すみませんが、よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

色々なサイトを見ているとカメラで撮った写真は直接データベースに保存するのではなく、保存先のパスをデータベースに保存したほうがいいという意見が多く、僕もそのやり方で実装しようとしているのですが、カメラで撮影した画像はどこに保存すればいいのでしょうか?

SQLiteを使っているなら画像はblob型のフィールドに格納したので良いと思います。
http://d.hatena.ne.jp/uosoft/20090715/1247583662

http://d.hatena.ne.jp/kazukingband/20120704/1341361072
を参考にするとよいと思います。

blob型を使えなかったり、blob型のサイズに制限があるようなデータベースを使っているなら、
Documentsフォルダ配下に画像ファイルを格納して、そのファイル名をデータベースで
管理するのが常套手段です。(でも、DBレコードの追加・削除に連動して画像ファイルを
追加・削除しないといけないので、少しだけ面倒です)

撮影した画像を写真アプリや他のアプリから使えるようにしたい意図があるなら、
カメラロールに保存すればいいですが、そうでなければカメラロールを使う必要は
ありません。

また、カメラ撮影をした後に保存先のパスを取得するとなると、どのように取得すればよろしいでしょうか?カメラ撮影が完了したことを検知するデリゲートメソッドを探しても見当たらないのでどうすればいいのか分かりません。以下のメソッドを実装してもカメラ撮影後に以下のメソッドが呼ばれず、カメラロールから写真を選んだときしか呼ばれません。

https://akira-watson.com/iphone/camera-objective-c.html
とかを参考にするとよいと思います。

カメラ撮影後にはdidFinishPickingMediaWithInfoが呼ばれます。
それが呼ばれない原因はdelegateがちゃんと設定できていない
という可能性が考えられますが、そのあたりは大丈夫ですか?

あとは、上記参考サイトのUIImageWriteToSavedPhotosAlbum呼び出しの部分を
データベースへの保存に変えるだけで撮影画像をデータベースに
保存することはできると思います。

投稿2015/08/27 14:53

TakeOne

総合スコア6299

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

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

tarofess

2015/08/28 06:48

ご回答ありがとうございます。なるほど、ファイル名をデータベースに保存する場合はDBレコードの追加・削除に連動して画像ファイルを追加・削除しないといけないので面倒なのですね。didFinishPickingMediaWithInfoではdelegateは設定しているのになぜか呼ばれないのです......。参考になるURLを沢山ありがとうございます。ご回答を参考に機能を実装していきたいと思います。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問