2016-10-05 38 views
2

私はSwift 2.2を使用してiOSアプリケーションを作成しています。選択したイメージのサイズを変更するために、Realmデータベースにアカウントのプロフィール画像をローカルに保存します。私はグーグルでもhereを見たが、よくはっきりしていない。画像のサイズが小さいか少ない場合や、画像やサイズが大きい場合は何ができますか?イメージをレルムデータベースに保存するにはどうすればよいですか?

別の混乱は、NSDataまたはNSStringのどちらを使用するかです。 私のモデルは

class IndividualContact: Object { 

    dynamic var photoDataString = "" 
    var photoData: NSData? = nil 
    dynamic var isPhotoAvailable = false 
} 

であると私はすでに今、私はそれが(120 * 110サイズ)とサイズを変更するために応じて保存することができますどのようにギャラリー

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

     if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 

      imageView.contentMode = .ScaleAspectFit 
      imageView.image = pickedImage 
     } 

から画像を選びましたか?

+0

お困りですか?イメージのサイズを変更してイメージをデータベースに保存する –

+0

"Documents"ディレクトリにイメージをコピーし、そのパスを保存することをお勧めします。 –

+0

レルム上にイメージを直接格納することは推奨されていません。電話のドキュメントディレクトリにイメージを格納し、レルム上にイメージ名/パスを保存する必要があります – Tj3n

答えて

6

Realmに直接画像を保存してNSDataに変換して保存することはできません。

あなたのイメージはタイプJPEGであるならば、使用し、

let data = NSData(data: UIImageJPEGRepresentation(yourImage,0.9)) 

と、あなたのイメージがPNG型であるならば、使用し、その後

let data = NSData(data: UIImagePNGRepresentation(yourImage)) 

あなたが

、のような領域にファイルを書き込み
let realm = Realm() 
realm.write{ 
    realm.add(data) 
} 

これが役に立ちます。

+0

私はそれが私は何をする画像のタイプを知っていない場合は? – KhanShaheb

+0

ファイルパスまたはURLを直接与えることができます。 –

+0

私は新人ですので簡単に説明してください – KhanShaheb

2

次のようにすると効果があります。

1)あなたのイメージは、PNG形式の画像データに変換)があればPNG形式にデータを変換する...

let imgPNG = UIImage.imageWithData(data) 

3)

let data = NSData(data: UIImageJPEGRepresentation(yourImage,0.9)) 

2 ...データに変換.. 。

let dataPNGImg = NSData(data: UIImagePNGRepresentation(imgPNG)) 

4)

...レルムDBにデータを保存しますそれだ
let realm = Realm() 
    realm.write{ 
     realm.add(dataPNGImg) 
    } 

は...

注:私は完全にデータベースに画像を保存するために、良いアイデアではありませんサチンに同意しています。データベースの負荷と処理時間が増加します。

関連する問題