【Swift】Firebaseに画像を保存/画像を読み込む
完成図
「操作画面」
「保存されているデータ」
解説
Firebaseから画像を取得するには、2つの方法がある。
↓
- Storageの参照で取得
- FiirebaseUIで取得
(参考ページ)
前者は一般的な方法だがクロージャやエラーハンドリングのせいでコードが長くなりやすい。
今回は、たった3行でFirebaseから画像をダウンロードする方法を紹介する。
(ついでに画像を保存する方法も載せておく。)
(参考ページ)
「アップロード時のファイル名について」
画像やファイルをアップロードするとき、
- Storage.storage.reference(forURL: ストレージのURL).child(ファイル名(階層名))
で保存する。
もし好きなファイル名にしたいなら、
child(命名したい文字列)
ランダムに命名したいなら、
childByAutoId()
ソースコード
import UIKit import Firebase import FirebaseUI class FirebaseStorage: UIViewController { @IBOutlet weak var imageView: UIImageView! @IBAction func uploadImage(_ sender: Any) { uploadImage() } @IBAction func loadImage(_ sender: Any) { loadImage() } //Storageに画像を保存する func uploadImage() { //Storageの参照("Item"という名前で保存) let storageref = Storage.storage().reference(forURL: "gs://sample-e206e.appspot.com").child("Item") //画像 let image = UIImage(named: "猫.png") //imageをNSDataに変換 let data = image!.jpegData(compressionQuality: 1.0)! as NSData //Storageに保存 storageref.putData(data as Data, metadata: nil) { (data, error) in if error != nil { return } } self.dismiss(animated: true, completion: nil) } //取得したURLを基にStorageから画像を取得する func loadImage() { //StorageのURLを参照 let storageref = Storage.storage().reference(forURL: "gs://sample-e206e.appspot.com").child("Item") //画像をセット imageView.sd_setImage(with: storageref) } }