ユーザがアップした画像をFirebaseのStorageにアップロードしそのURLを取得する方法です。URLさえわかればDBに画像のパスを保存するのに便利なので、色々な機会で役立つと思います。
Contents
UIImageをStorageに保存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
let asset:UIImage! asset.fetchFullScreenImage(true, completeBlock: { (image, info) in let resizedImage = resizeImage(image: image!, width: UIScreen.main.bounds.width) let imageData = UIImageJPEGRepresentation(resizedImage, 1.0) let imagePath = Auth.auth().currentUser!.uid + "/\(Int(Date.timeIntervalSinceReferenceDate * 1000)).jpg" let metadata = StorageMetadata() metadata.contentType = "image/jpeg" self.storageRef.child(imagePath).putData(imageData!, metadata: metadata) { (metadata, error) in if let error = error { print("Error uploading photo: \(error)") return } // これを適宜利用します let downloadURL:String = (metadata?.downloadURL()?.absoluteString)! } }) |
画像のリサイズ
widthを画面幅まで縮小し、同じ比率で縦幅も縮小
1 2 3 4 5 6 7 8 9 |
func resizeImage(image: UIImage, width: CGFloat) -> UIImage { let ratioSize = image.size.height / image.size.width UIGraphicsBeginImageContext(CGSize(width: width, height: width * ratioSize)) image.draw(in: CGRect(x: 0, y: 0,width: width, height: width * ratioSize)) let resizedImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return resizedImage! } |